Comment récupérer des informations depuis internet sur Excel et sans macro VBA (et créer un comparateur de prix)
Dans ce tutoriel, je vais vous montrer comment faire pour récupérer des informations depuis une page internet comme Google directement dans une feuille de calcul Excel (taux de conversion de dollars en euros)
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
Partie 1 : récupérer des informations sur internet :
Partie 2 : créer un mini-comparateur de prix sur Excel :
Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !
1. Introduction
Pour récupérer des informations depuis un site internet, nous disposons de plusieurs solutions, dont la plus simple que nous allons voir dans ce tutoriel consiste utiliser le navigateur internet intégré dans Excel afin de copier le contenu d’une page directement dans une feuille de calcul.
Pour illustrer ce tutoriel, nous allons utiliser le fichier d’exemple que nous avions construit lors du tutoriel précédent consacré aux arrondis dans Excel.
Dans celui-ci, nous retrouvions une série d’articles qu’une entreprise souhaite acquérir, et dont les prix sont exprimés en dollar :
Pour obtenir le prix d’acquisition en euro, nous avions alors utilisé le taux de conversion valable lors de la création du tutoriel.
L’objectif à présent est d’utiliser un bouton qui permette simplement d’actualiser ce taux de conversion du dollar vers l’euro.
2. Récupérer des données depuis un site internet
Pour récupérer le contenu d’une page internet directement dans une feuille de calcul, il suffit d’utiliser l’outil de récupération des données externes d’Excel.
Pour cela, nous nous rendons dans le menu Données du ruban > Données externes > Web :
Cette option permet d’ouvrir un mini-navigateur internet, qui évidemment a pour page d’accueil le portail de Microsoft msn.com :
Pour simplifier les choses, nous nous connectons plutôt sur le site de google.fr :
Puis nous saisissons simplement notre recherche : « taux conversion dollar euro » :
Google nous indique alors que le taux de conversion est de 0.90 euro pour 1 dollar américain.
Maintenant, nous souhaitons récupérer cette page internet directement dans le classeur, et pour cela, nous cliquons sur le bouton [Importer] situé en bas à droite de la fenêtre :
Dans cette petite fenêtre, nous spécifions que nous souhaitons récupérer ces informations dans une Nouvelle feuille de calcul, puis nous cliquons sur le bouton [Propriété…] afin de définir les règles d’actualisation de ces informations :
Nous demandons alors à Excel de mettre à jour les données de la page toutes les 10 minutes, ainsi que lors de chaque ouverture du classeur.
Puis nous validons en appuyant sur le bouton [OK], Excel crée alors une nouvelle feuille de calcul dans laquelle toutes les informations de la page web vont être insérées :
3. Extraire une information d’une page Web
À présent que nous disposons des informations de la page tirées de google, voyons comment extraire la seule donnée qui nous intéresse.
Tout d’abord, identifions dans quelle cellule se trouve le taux de conversion :
Il s’agit de la cellule A35.
Revenons dans la feuille de calcul dans laquelle se trouve les coûts d’acquisitions des articles pour récupérer la valeur de cette cellule dans une cellule vide :
À présent, la seule chose qui nous intéresse dans cette cellule, c’est le taux de conversion réel (le 0,90).
Pour supprimer le reste de la cellule, nous allons utiliser la formule SUBSTITUE() qui permet de remplacer un texte par un autre texte au sein du cellule.
Nous supprimons tout d’abord le début de la cellule, c’est-à-dire le texte « 1 Dollar américain = » (sans oublier les espaces, notamment le dernier après le symbole égal), que nous remplaçons par une chaîne vide :
=SUBSTITUE(Feuil1!A35;"1 Dollar américain = ";"")
Puis nous faisons de même pour la fin de la cellule, en utilisant le résultat obtenu juste avant imbriqué en tant que premier paramètre :
=SUBSTITUE(SUBSTITUE(Feuil1!A35;"1 Dollar américain = ";"");" Euro";"")
Cela étant fait, il ne reste plus qu’à copier cette formule dans la cellule C7 pour que le nouveau de conversion soit correctement pris en compte :
Comme vous pouvez le constater, le résultat obtenu est aligné sur la gauche de la cellule car celui-ci est encore considéré comme du texte par Excel :
Vous constaterez également que cela n’empêche pas Excel de réaliser les calculs adéquats.
Si vous souhaitez quand régulariser l’affichage du résultat, il suffit d’imbriquer toute la formule dans une formule CNUM() qui se charge de convertir une chaîne de caractère en chiffres :
=CNUM(SUBSTITUE(SUBSTITUE(Feuil1!A35;"1 Dollar américain = ";"");" Euro";""))
4. Mettre à jour les informations
L’intérêt d’utiliser une requête comme nous venons de le faire plutôt que d’aller saisir manuellement l’information dans une cellule, c’est que maintenant c’est directement Excel qui va aller chercher l’information sur Internet.
En effet, plus tôt dans ce tutoriel nous lui avons demandé de mettre à jour les informations de la page à chaque fois que nous ouvrirons le classeur, et au plus toutes les dix minutes !
Il est encore possible de forcer l’actualisation des données depuis le menu Données > Actualiser tout (ou avec le raccourci clavier [Ctrl]+[Alt]+[F5]) :
Attention toutefois, la méthode que nous venons de mettre en place souffre d’un gros défaut. En effet, nous sommes allés chercher manuellement la cellule qui contient le taux de conversion à utiliser (Cellule A35). Or, celle-ci dépend directement du contenu de la page web depuis laquelle nous récupérons l’information. Il suffit donc que Google modifie l’architecture de sa page pour les coordonnées de la cellule soient également modifiées. Imaginons que Google décide d’insérer un nouvel élément dans le menu entre les boutons YouTube et Actualités :
Alors cela aura pour effet de décaler toutes les cellules d’une case vers le bas dans la feuille de récupération :
Pour éviter ce problème, il est donc nécessaire de déterminer de manière dynamique dans quelle cellule se trouve le taux de conversion.
5. Un mini comparateur de prix
Maintenant, nous allons nous atteler à la construction d’un mini-comparateur de prix, qui va se charger comme son nom l’indique de récupérer les prix d’une série d’articles sur deux sites internet d’e-commerce : Amazon.fr et Rueducommerce.fr.
Ces deux sites n’ont pas été choisi au hasard, en effet, ceux-ci étant construits de manières différentes, ils nous permettront d’appréhender deux méthodes différentes !
Tout d’abord découvrons les trois articles dont nous souhaitons suivre l’évolution des prix de vente :
- Un smartphone Xiaomi mi9,
- Une console Nintendo Switch,
- Un montre Apple Watch série 4
Pour faciliter le travail, les liens dirigeant vers les fiches articles de ces trois articles sont directement inscrits dans la seconde feuille du fichier de travail :
5.1. Récupérer les prix depuis Amazon sur Excel
Puisqu’il faut bien choisir de commencer quelque part, ce sera par Amazon !
Pour commencer, nous sélectionnons le lien du premier article afin de le copier :
- Sélection de la cellule,
- Puis sélection du lien complet,
- Puis Clic-droit > Copier :
Puis nous lançons une nouvelle requête web, comme nous l’avons déjà vu auparavant (Données > Web) :
Note : si le bouton Web est grisé, sélectionné une cellule vide de la feuille de calcul :
Dans le navigateur qui se lance alors, nous collons l’adresse de la fiche article :
Puis validons en appuyant sur le bouton [OK].
Lorsque la page est totalement chargée, nous pouvons constater une petite particularité au niveau du prix, que nous n’avions encore jamais observée dans nos exemples précédents :
Voyez la petite flèche jaune, celle-ci indique qu’il est possible de ne rapatrier que l’encart dans lequel se trouve le prix !
Et nous n’allons surtout pas nous en priver. Pour cela, nous cliquons sur la flèche :
Celle-ci prend alors la forme d’une case d’option à cocher bleue.
Ensuite, nous procédons comme d’habitude en cliquant sur le bouton [Importer] :
Nous choisissons d’importer le prix dans une nouvelle feuille :
Puis nous cliquons sur le bouton [OK] (inutile d’aller dans les options, nous actualiserons les données en cliquant sur le bouton Actualiser tout).
Et voilà le prix est maintenant importé !
Comme vous pouvez le constater, une partie seulement de la page a été importée ! Cela signifie, que même si Amazon vient à modifier la structure de sa page, cela n’aura aucun impact la position de la cellule contenant le prix (cellule B1).
Maintenant, et étant donné que nous allons mettre en place une importation sur de nombreuses pages internet, nous allons renommer chacune d’elle avec clarté :
Ensuite, nous procédons toujours de la même manière :
- Nous sélectionnons la cellule dans laquelle nous souhaitons insérer le prix dans le comparateur de prix :
- Puis nous allons récupérer la valeur de la cellule qui nous intéresse (en saisissant le symbole égal (« = ») et en allant sur la nouvelle feuille de calcul chercher la cellule B1) :
- Enfin nous validons en appuyant sur la touche [Entrée] du clavier :
Comme nous pouvons alors le constater, Excel a fort logiquement récupéré tout le contenu de la cellule.
Nous l’avons déjà vu, il suffit alors d’imbriquer cette référence dans la formule SUBSTITUE() :
=SUBSTITUE('AMZ-mi9'!B1;" € Livraison GRATUITE en France métropolitaine. Détails ";"")*1
Il ne nous reste plus qu’à faire de même pour les deux articles suivant (la Nintendo Switch et l’Apple Watch) :
5.2. Récupérer les prix depuis Rueducommerce sur Excel
Maintenant que nous avons qu’il pouvait être simple de récupérer des informations depuis un site internet, dans lequel celles-ci sont encapsulées dans un encadrement limité, voyons comment procéder lorsque cela n’est pas le cas, et que nous allons alors devoir rapatrier l’entièreté de la page internet.
Pour récupérer des données sur le site de rueducommerce.fr, nous procédons de la manière :
- Copie du lien,
- Lancement d’une requête Web :
- Collage du lien dans la barre d’adresse :
Ensuite, lorsque toute la page est chargée, nous constatons l’absence d’encadrement de la zone dans laquelle se trouver le prix de vente.
Nous allons donc devoir récupérer toute la page, en cliquant simplement sur le bouton [Importer] :
Comme d’habitude, nous insérons cette page internet dans une nouvelle feuille de calcul :
S’agissant d’une page internet complète, nous allons tout d’abord devoir rechercher dans quelle case se trouve le prix de vente :
Celui-ci se trouve en A71 :
Par contre, comme nous l’avons déjà vu précédemment, pointer directement sur cette cellule peut être source d’anomalie, car si la structure de la page venait à changer, les coordonnées ne seraient alors plus les bonnes.
Nous allons donc devoir trouver un critère qui permettent de facilement identifier cette cellule de manière dynamique !
Si nous regardons attentivement cette cellule, nous constatons qu’un des signes distinctifs qui pourrait nous permettre de simplement retrouver la cellule est la présence du signe euro !
De plus si nous regardons les cellules situées juste au-dessus, aucune autre cellule n’en contient.
Nous tenons là une bonne piste. Sachant que pour retrouver la première cellule contenant une valeur, nous allons pouvoir utiliser une formule que nous avons déjà détaillée, il s’agit d’INDEX-EQUIV évidemment !
Pour effectuer une recherche sur une partie seulement de la valeur d’une cellule, nous allons en plus être amené à utiliser le symbole joker astérisque (que nous avons également déjà vu dans le tutoriel sur les recherches dans Excel).
Ainsi, voici la formule à saisir :
=INDEX('RDC-mi9'!A:A;EQUIV("*€*";'RDC-mi9'!A:A;))
Ici, la plage de recherche et la plage de retour est la même, il s’agit de toute la colonne A de la feuille de calculs RDC-mi9.
Nous souhaitons ainsi savoir à quelle position au sein de cette colonne A se trouve la première cellule qui contient le symbole euro (les deux jokers astérisque permettent de chercher une cellule dans laquelle se trouve ce symbole euro).
Par contre, comme vous pouvez le voir, la cellule est centrée sur la gauche : cela signifie qu’Excel n’identifie pas cette valeur comme un nombre.
La faute en revient au symbole euro !
Si l’on souhaite malgré tout effectuer des calculs sur ces cellules, il convient donc d’utiliser à nouveau la formule SUBSITUE() afin de remplacer le symbole euro par une virgule :
=SUBSTITUE(INDEX('RDC-mi9'!A:A;EQUIV("*€*";'RDC-mi9'!A:A;));"€";",")*1
Puis nous effectuons le même travail pour les deux autres produits : la Switch et l’Apple Watch.
Lorsque nous allons saisir la formule permettant de récupérer le prix d’achat de la Switch, nous allons être confronté à une erreur :
Pour en comprendre la raison, nous allons observer la page internet récupérée :
Nous comprenons alors le problème : la cellule contenant le prix n’est pas la première cellule dans laquelle le symbole euro est inséré !!
Mais pas de panique, il nous suffit de trouver un critère de sélection plus précis : par chance, les formatages de prix sont différents sur les deux cellules. Aussi, il nous suffit de modifier légèrement la formule, nous spécifier que nous recherchons la première formule dont le prix est exprimé sous la forme « *€?? », c’est-à-dire qu’il peut y avoir un nombre indéfini de caractères avant le signe euro, mais obligatoirement deux caractère à la suite du symbole euro, correspondant aux centimes :
=SUBSTITUE(INDEX('RDC-Switch'!A:A;EQUIV("*€??";'RDC-Switch'!A:A;));"€";",")*1
Cette même formule fonctionne à merveille pour récupérer le prix de l’Apple Watch :