formateur informatique

Application connectée à Internet en VBA Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Application connectée à Internet en VBA Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Récupérer les informations d'Internet

Nous souhaitons monter une petite application Excel capable de récupérer des données variables depuis un site Web afin de réaliser des calculs.

Application Visual Basic Excel connectée à un site Internet

Vous percevez des gains en dollars mais vous habitez l'Europe. Chaque mois, la conversion du salaire dépend du taux de change. Ce dernier fluctue chaque minute. L'objectif de l'application consiste à récupérer le taux de change entre dollar et Euro pour réaliser le calcul des gains dans la monnaie locale.

Classeur du taux de change
L'extraction des informations issues du Web se réalise nécessairement par du code VBA. C'est l'objectif que nous devons atteindre dans cette formation. Pour ce faire, nous partons d'un classeur existant qui n'attend plus que la valeur manquante pour le calcul. Ce classeur n'est constitué que d'une seule feuille, la feuille Cours en bourse. C'est en cellule E10 que l'information sur le taux de change d'un dollar américain en Euro, doit être récupérée et inscrite.

Nous devons donc construire un code Visual Basic Excel capable de se connecter à Internet pour télécharger le contenu intégral d'une page offrant ces informations. Une fois la page téléchargée, le code VBA pourra accéder aux informations locales en lecture. Il s'agira de décortiquer les données pour ne conserver que l'information utile. Arbitrairement nous choisissons le site Boursorama.com qui fournit entre autres, tous les taux de change en temps réel. L'adresse de la page concernée est la suivante : https://www.boursorama.com/cours.phtml?symbole=1xEURUS.

Il est possible que cette url et que la structure de cette page changent au fil des années. Mais le principe que nous allons énoncer dans ce support reste le même. Il s'agira donc d'adapter le code d'extraction aux données récupérées depuis la page Internet.

Récupération des données du Web
L'information sur le taux de change doit être récupérée à trois occasions : A l'ouverture du classeur, au clic sur le bouton Actualiser mais aussi à intervalles de temps réguliers. C'est la raison pour laquelle nous écrirons le code VBA dans une fonction indépendante. Ainsi il pourra être appelé indifféremment lors de la génération des événements précités.

Taux de change temps réel devises site internet

Comme l'illustre la capture ci-dessus, l'information à récupérer se trouve dans un calque HTML indépendant(Div ou Span). Cette remarque prendra tout son sens lorsqu'il s'agira d'extraire précisément le taux de change, sans aucune donnée parasite.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur de code VBA Excel,
  • En haut de la fenêtre de l'éditeur, cliquer sur le menu Insertion,
  • Dans la liste, choisir Module,
  • Dans la page de code du module au centre de l'écran, saisir l'instruction suivante :
Option Explicit

Cette déclarative impose à VBA de surveiller toutes les déclarations de variables, entre autres. Plutôt que d'utiliser le raccourci clavier, nous aurions pu afficher le ruban développeur sur l'interface Excel, comme nous l'apprend la formation pour débuter la programmation en VBA. Mais cette combinaison de touches est un standard fort efficace dans toute application Office.

Module de code Visual Basic Excel pour créer fonctions interactives

Le module nommé Module1 par défaut, apparaît sur la gauche, dans l'arborescence de l'explorateur de projets. S'il n'est pas visible dans votre environnement, vous pouvez dérouler le menu Affichage et choisir Explorateur de projets dans la liste.
  • A la suite du code, créer la fonction recuperer_web, comme suit :
Function recuperer_web()
MsgBox "Ok"
End Function


Nous pourrons ainsi appeler la fonction par son nom afin de déclencher le code de récupération des données depuis le Web. A titre de test, nous intégrons temporairement l'affichage d'une boîte de dialogue grâce à la fonction VBA MsgBox.
  • Enregistrer les modifications (CTRL + S) et basculer sur le classeur Excel (ALT + F11),
  • Cliquer droit sur le bouton Actualiser de la feuille Excel,
  • Dans le menu contextuel, choisir Affecter une macro,
  • Dans la boîte de dialogue qui suit, saisir actualiser dans la zone Nom de la macro,
  • Puis, cliquer sur le bouton Nouvelle afin de valider la création de la procédure associée,
Créer procédure de code VBA associée à un bouton de feuille Excel pour déclencher traitements

Nous basculons de nouveau dans l'éditeur de code Visual Basic Excel mais cette fois, entre les bornes de la procédure : actualiser(). Il est possible qu'un nouveau module Module2 ait été créé automatiquement pour recevoir la procédure. Mais qu'elle soit déclarée dans le Module1 ou le Module2 ne change rien à l'interaction du code.
  • Entre les bornes de la procédure actualiser, ajouter l'appel à la fonction :
Sub actualiser()
recuperer_web
End Sub


Comme la fonction que nous avons créée ne requiert pas d'argument, son appel peut se faire sans les parenthèses.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • Cliquer dans n'importe quelle cellule pour désélectionner le bouton,
  • Puis, cliquer sur le bouton Actualiser,
Validation de code VBA déclenché au clic sur un bouton de feuille Excel

Comme l'illustre la capture ci-dessus, la boîte de dialogue commandée par la fonction MsgBox se déclenche parfaitement. Nous avons donc la confirmation que le clic sur le bouton permet d'appeler le code qui sera inscrit entre les bornes de la fonction recuperer_web. Cette ligne de test n'est donc plus utile.
  • Basculer de nouveau dans l'éditeur de code Visual Basic Excel (Alt + F11),
  • Si nécessaire, sans l'explorateur de projets, cliquer sur l'élément Module1,
  • Dans les bornes de la fonction, supprimer la ligne de code : MsgBox "Ok",
Télécharger une page Web en VBA
Avant de traiter l'information, nous devons la récupérer en local pour y accéder en lecture par le code Visual Basic. Comme toujours, nous commençons par déclarer les variables utiles, sachant que c'est une fois de plus un objet ActiveX à instancier qui permettra de réaliser le download. Et c'est l'incontournable fonction VBA CreateObject qui permet d'hériter des propriétés et méthodes d'une telle classe.
  • Dans les bornes de la fonction, ajouter les déclarations de variables suivantes :
Dim donnees_fichier() As Byte
Dim page_web As String : Dim chemin As String
Dim objet_reponse As Object


Le tableau de variables donnees_fichier doit permettre de récupérer la réponse binaire à la requête HTTP, formulée par la fonction CreateObject, afin de reconstituer le fichier téléchargé en local. La variable page_web, déclarée comme une chaîne de caractères, doit permettre de stocker l'url de la page à télécharger pour la fournir à la requête http. Ensuite, la variable objet_reponse est volontairement déclarée comme un objet. C'est elle qui par le biais de la fonction CreateObject doit permettre d'instancier la classe capable de réaliser des requêtes Web. Enfin, la variable chemin doit permettre de définir et stocker le répertoire dans lequel doivent être enregistrées les données récupérées.

Il s'agit maintenant d'initialiser les variables en commençant par l'objet Web.
  • A la suite du code, ajouter les affectations suivantes :
Set objet_reponse = CreateObject("WinHTTP.WinHTTPrequest.5.1")
page_web = https://www.boursorama.com/cours.phtml?symbole=1xEURUS
chemin = ThisWorkbook.Path & "\donnees.txt"


La fonction VBA CreateObject permet d'instancier une classe ActiveX en fonction de l'argument qui lui est passé. Avec la valeur WinHTTP.WinHTTPrequest.5.1, nous créons l'objet pour la requête Web. Plus simplement, la variable page_web est affectée à l'url précise de la page internet fournissant les taux de change en temps réel. La propriété Path de l'objet ThisWorkbook retourne le chemin d'accès complet au dossier dans lequel le classeur en cours est enregistré. Nous concaténons cette adresse au nom du fichier dans lequel nous souhaitons écrire les informations récupérées (& "\donnees.txt").

Il est temps d'exploiter les méthodes de l'objet ainsi créé afin de formuler la requête Web et de récupérer la réponse fournie en données binaires.
  • A la suite du code, ajouter les instructions suivantes :
objet_reponse.Open "GET", page_web, False
objet_reponse.Send
donnees_fichier = objet_reponse.ResponseBody
Set objet_reponse = Nothing


La méthode Open de l'objet ActiveX permet de créer la requête en précisant les arguments nécessaires. Le premier d'entre eux stipule la demande de récupération ("GET") des informations. Le deuxième paramètre fournit l'url de la page dont on souhaite récupérer les données binaires. Enfin, le dernier paramètre booléen, défini à False, permet de forcer le mode synchrone pour la récupération des données. La méthode Send de l'objet ActiveX permet alors d'envoyer la requête Web ainsi formulée. La réponse, soit les données binaires de la page désignée, est stockée dans le tableau de variables déclaré à cet effet. C'est désormais cette variable qui contient l'ensemble des informations de la page Web, dont la valeur du taux de change qui nous intéresse. Puis, comme nous en avons désormais l'habitude, nous déchargeons la variable objet qui n'est plus utile (Set objet_reponse = Nothing).

Il s'agit maintenant de restituer ces données binaires dans un fichier sur le disque local, de préférence dans le répertoire de l'application Excel. Nous devons accéder au fichier donnees.txt en écriture mais en écriture binaire. La formation VBA Excel pour exporter des données nous avait appris à accéder aux fichier en écriture normale (For Output). Lors de ces accès séquentiels aux fichiers externes, lorsque ce dernier n'existe pas, il est créé. S'il existe, son contenu est écrasé.
  • A la suite du code, ajouter les instructions suivantes :
Open chemin For Binary Access Write As #1
Put #1, 1, donnees_fichier
Close #1


Comme nous le savons, l'instruction Open suivie du chemin d'accès au fichier, permet d'accéder à ce dernier en mémoire. A l'aide du mot clé For, nous définissons ensuite le mode d'accès. Binary Access Write permet donc de définir un accès en écriture binaire. Comme le fichier est traité en mémoire, nous définissons enfin une adresse pour son allocation, à l'aide d'un chiffre (#1). L'instruction Put permet alors l'écriture binaire dans le fichier, désigné par son adresse en mémoire (Put #1). Le deuxième argument (, 1) signifie que les données binaires, enregistrées dans le tableau de variables, sont inscrites ligne à ligne. Bien entendu, le dernier argument (donnees_fichier) permet d'indiquer à partir de quelle variable les données sont lues pour être écrites. Comme toujours, une fois les données écrites, l'accès en mémoire doit être libéré. L'instruction Close suivie de l'adresse mémoire du fichier, permet de décharger ce dernier de la RAM.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • Cliquer sur le bouton Actualiser,
En apparence rien ne se produit. Nous avons en effet supprimé la ligne de code qui renvoyait les informations sous forme de boîte de dialogue. En réalité, les données ont dû être récupérées et inscrites en local, de façon transparente pour l'utilisateur.
  • Dans l'explorateur Windows, ouvrir le dossier dans lequel le classeur est enregistré,
Récupération des données binaires depuis page Internet pour reconstruire code HTML dans fichier local grâce à Visual Basic

Vous notez la présence du fichier donnees.txt. Si vous l'ouvrez, le code HTML de la page désignée par son URL est intégralement restitué. En faisant une recherche sur l'information EUR</span>, nous trouvons l'information de conversion temps réel d'un dollar en euro. </span> est la balise de fermeture du calque dans lequel la donnée du taux de change est inscrite.

Importer les données téléchargées depuis le Web
Il s'agit désormais d'accéder à ces informations téléchargées en lecture. Pour structurer le code, nous proposons de créer une fonction dédiée que nous appellerons à la fin du code de récupération.
  • Revenir dans l'éditeur de code VBA Excel,
  • Sous la fonction recuperer_web, créer la fonction recuperer_taux, comme suit :
Function recuperer_taux(chemin As String)

End Function


Nous déclarons cette fonction avec un argument, celui du chemin d'accès au fichier à lire. Donc la fonction recuperer_web, à l'issue de son traitement, doit appeler la fonction recuperer_taux.
  • A la fin de la fonction recuperer_web, avant le End Function, ajouter l'appel suivant :
recuperer_taux(chemin)

Nous devons maintenant déclarer les variables nécessaires à la récupération du contenu, par la lecture du fichier texte.
  • Dans les bornes de la fonction recuperer_taux, ajouter les déclarations suivantes :
Dim contenu As String: Dim taille_fichier As Long
Dim position_fin As Long: Dim position_depart As Long


La variable contenu doit permettre de stocker l'intégralité des informations contenues dans le fichier texte afin de les décortiquer pour en extraire le taux de change. La variable taille_fichier est déclarée comme un entier long car elle servira à stocker la longueur du fichier texte, en Octets. Ce renseignement permettra ensuite d'entamer la lecture sur la longueur totale du fichier. Les variables position_depart et position_fin permettront de retourner les octets à partir desquels la chaîne de caractères pourra être découpée, pour retrouver l'information souhaitée.

Les variables étant déclarées, nous devons maintenant accéder au fichier passé en paramètre, en lecture.
  • A la suite du code, ajouter les instructions suivantes :
Open chemin For Input As #1
taille_fichier = LOF(1)
contenu = Input(taille_fichier, 1)
Close #1


Comme nous l'avons appris, l'instruction Open permet d'accéder au fichier désigné par la variable chemin. Cet accès se fait en lecture (For Input) à une adresse mémoire précise désignée par un numéro libre (As #1). Contrairement à d'autres accès que nous avions réalisés au travers d'autres formations, nous récupérons cette fois l'intégralité du fichier, plutôt que de le parcourir ligne à ligne. C'est pourquoi nous récupérons d'abord la taille du fichier en Octets grâce à la fonction LOF. LOF est une contraction de l'expression Len Of File. En paramètre de cette fonction, nous désignons le fichier par son adresse mémoire (LOF(1)). La fonction Input permet alors d'affecter le contenu du fichier dans la variable contenu, sur la longueur passée en paramètre (taille_fichier). Puis nous fermons l'accès en mémoire pour libérer les ressources (Close #1).

Puisque l'intégralité du code HTML de la page Web est désormais stockée dans la variable contenu, il est temps de découper cette dernière afin d'en extraire le taux de change. Cette information se trouve juste avant la fermeture de la balise de son calque et plus précisément devant l'expression remarquable suivante : EUR</span>. Nous proposons donc de commencer par mémoriser la position de cette expression.
  • A la suite du code, ajouter les deux instructions suivantes :
position_fin = InStr(1, contenu, "EUR</span>")
MsgBox position_fin


La fonction VBA InStr retourne la position d'une occurrence (EUR</span>) dans une chaîne de caractères (contenu), en partant d'une position de départ (1). Nous l'avions largement exploitée dans le jeu du pendu en VBA Excel afin de décomposer les expressions à retrouver. A titre de confirmation temporaire, nous inscrivons le résultat retourné dans une boîte de dialogue MsgBox.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • Cliquer sur le bouton Actualiser pour tester le code,
Comme le montre la capture ci-dessous, le code est parfaitement fonctionnel. Après avoir écrasé les informations récupérées depuis l'url, le contenu du fichier résultant est décortiqué pour trouver la position en octets, du code HTML fermant le calque du taux de change.

Extraction des informations HTML téléchargées en binaire depuis Internet par code VBA Excel

Dans le but de ne conserver que la partie utile du fichier, nous devons maintenant trouver la position de départ du calque contenant l'information sur le taux de change. En HTML une balise fermante est forcément précédée d'une balise ouvrante. L'astuce consiste donc à trouver la dernière occurrence du caractère > dans la chaîne.
  • A la suite du code, ajouter les instructions suivantes :
contenu = Left(contenu, position_fin)
position_depart = InStrRev(contenu, ">") + 1
MsgBox position_depart


Nous retaillons d'abord le contenu du fichier mémorisé sur la partie utile grâce à la fonction VBA Left qui permet de prélever les caractères jusqu'à la position précédemment trouvée, donc jusqu'à la fermeture du calque. Ensuite, nous exploitons cette fois la fonction InStrRev. A l'inverse de son homologue InStr, la fonction VBA InStrRev permet non pas de retourner la position de la première occurrence trouvée, mais la position de la dernière occurrence trouvée, soit l'ouverture du calque. Nous incrémentons ce résultat d'une position pour ne pas considérer le caractère de recherche.

Retrouver position de la dernière occurrence de caractère dans code HTML téléchargé en VBA Excel

Un nouvel essai conduit à l'affichage de la position de départ de l'information à extraire. Le MsgBox confirme que les deux positions sont proches, ce qui paraît logique. Puisque nous connaissons désormais le point de départ et le point d'arrivée, il suffit d'extraire la chaîne de caractères située entre ces deux positions. La fonction Mid que nous avions exploitée dans la formation pour extraire les données des informations importées, permet de découper une chaîne de caractères en partant d'une position de départ et sur une longueur définie. La longueur en question correspond à la différence entre la position de fin et la position de départ.
  • En conséquence, à la suite du code, ajouter les deux instructions suivantes :
contenu = Mid(contenu, position_depart, position_fin - position_depart)
contenu = Replace(Replace(contenu, " ", ""), ".", ",")
MsgBox contenu


Dans un premier temps, nous découpons l'information située précisément dans le calque, définie par les positions des balises ouvrantes et fermantes. Pour ce faire, la fonction Mid requiert tout d'abord la chaîne de caractères sur laquelle elle doit travailler, soit la variable contenu. Puis nous lui indiquons la position à partir de laquelle le prélèvement doit commencer, soit la variable position_depart, et sur quelle longueur, soit la différence entre les deux positions trouvées. Nous purgeons ensuite cette donnée des potentiels espaces résiduels grâce à la fonction VBA Replace (Replace(contenu, " ","")). La fonction Replace travaille sur une chaîne de caractères (contenu) sur laquelle elle remplace une occurrence (" ") par une autre (""), soit l'espace par une chaîne de caractères vide. Cette fonction VBA Replace est elle-même imbriquée dans une autre fonction Replace afin de remplacer dans le même temps, le point (".") par une virgule (","). Nous avions d'ailleurs exploité cette fonction VBA Replace dans la formation Access pour nettoyer une base de données, en remplaçant des termes par d'autres.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • Cliquer sur le bouton Actualiser pour exécuter le code,
Extraire données HTML Web après découpe informations textuelles en Visual Basic Excel

Le dernier MsgBox affiche la valeur extraite du taux de change, depuis le site internet. A l'heure précise où nous écrivons ces lignes, 1 Dollar s'échange donc contre 0,8452 Euro. Il s'agit désormais d'inscrire cette valeur dans la cellule prévue à cet effet, soit la cellule E10. Puis il s'agit, par calcul Excel, de réaliser la conversion à partir de ce taux de change.
  • Basculer dans l'éditeur de code VBA Excel (ALT + F11),
  • Ajouter une apostrophe devant chaque MsgBox pour passer ces trois lignes en commentaires,
  • Dans la fonction, à la suite du code, ajouter l'instruction suivante :
Range("E10").Value = contenu

L'objet VBA Excel Range permet de désigner la cellule, définie par ses références et passée en paramètre. Sa propriété Value permet d'accéder à son contenu. Nous affectons ce dernier à la valeur du taux de change extraite par Internet.
  • Enregistrer les modifications et basculer de nouveau sur la feuille Excel,
  • En cellule E12, écrire la formule de conversion suivante : =E8*E10,
La cellule E8 indique le montant des gains en Dollars. La cellule E10 renferme le montant du taux de change extrait depuis internet, grâce au code VBA Excel. Donc, ce calcul inscrit en cellule E12, le montant correspondant des gains en Euros, selon le taux de change en vigueur.

Calculs Excel selon données mises à jour récupérées depuis Internet par code VBA
  • Cliquer sur le bouton Actualiser pour vérifier le résultat de la conversion,
La formule Excel associée au retour de l'extraction par le code VBA permet d'afficher la valeur des gains convertie en temps réel, selon le taux de change en vigueur issu d'internet. Le code VBA complet des deux fonctions ayant permis l'extraction, le découpage et la conversion est le suivant :

Function recuperer_web()
Dim donnees_fichier() As Byte
Dim page_web As String: Dim chemin As String
Dim objet_reponse As Object

Set objet_reponse = CreateObject("WinHTTP.WinHTTPrequest.5.1")
page_web = "https://www.boursorama.com/cours.phtml?symbole=1xEURUS"
chemin = ThisWorkbook.Path & "\donnees.txt"

objet_reponse.Open "GET", page_web, False
objet_reponse.Send
donnees_fichier = objet_reponse.ResponseBody
Set objet_reponse = Nothing

Open chemin For Binary Access Write As #1
Put #1, 1, donnees_fichier
Close #1

recuperer_taux (chemin)
End Function

Function recuperer_taux(chemin As String)
Dim contenu As String: Dim taille_fichier As Long
Dim position_fin As Long: Dim position_depart As Long

Open chemin For Input As #1
taille_fichier = LOF(1)
contenu = Input(taille_fichier, 1)
Close #1

position_fin = InStr(1, contenu, "EUR</span>")
contenu = Left(contenu, position_fin)

position_depart = InStrRev(contenu, ">") + 1
contenu = Mid(contenu, position_depart, position_fin - position_depart)
contenu = Replace(Replace(contenu, " ", ""), ".", ",")

Range("E10").Value = contenu
End Function


Génération sur intervalles de temps
Etant donné que les taux de change évoluent continuellement, non seulement cette valeur doit être extraite à l'ouverture du classeur, mais elle doit aussi être réactualisée automatiquement et régulièrement. Un code doit donc appeler une fonction à l'ouverture du classeur. Cette fonction doit se charger d'appeler la fonction recuperer_web à intervalles de temps réguliers, par exemple toutes les 10 secondes.
  • Basculer dans l'éditeur de code VBA Excel,
  • Créer la fonction appel_recurrent comme suit :
Function appel_recurrent()

End Function


L'objectif est d'exécuter une boucle de temps qui appelle toutes les 30 secondes par exemple, la fonction recuperer_web afin d'extraire le taux de change, puis de l'inscrire dans la cellule de la feuille. La fonction VBA Timer enseignée par la formation VBA Access pour archiver les données et générer un diaporama, prélève le temps qu'il est, à la seconde près. Cet incrément de temps doit être reconstruit de façon permanente, donc inclus dans une boucle infinie. Commençons par déclarer les variables utiles.
  • Dans les bornes de la fonction appel_recurrent, ajouter les déclarations suivantes :
Dim debut: Dim increment As Boolean

La variable debut non typée servira à prélever le temps exact, grâce à l'affectation du retour de la fonction Timer. La variable increment est un booléen que nous initialiserons et conserverons à la valeur True. Utilisée comme test dans une boucle, nous génèrerons une traitement récursif permanent.
  • A la suite du code, ajouter les instructions suivantes :
increment = True

While increment = True

Wend


Comme prévu nous initialisons la variable increment à True. Puis nous construisons les bornes de la boucle While sur la base de ce critère toujours vérifié. A l'intérieur de cette boucle, doit intervenir le traitement récursif sur l'intervalle de temps qui à l'issue, lancera l'exécution de la fonction recuperer_web.
  • A l'intérieur de la boucle While, ajouter les instructions suivantes :
debut = Timer

Do While Timer < debut + 30
DoEvents
Loop

recuperer_web


Nous prélevons le temps qu'il est, à chaque passage dans la boucle While, en affectant le retour de la fonction Timer à la variable debut. Le critère de la boucle Do While, Timer < debut + 30, permet de boucler dans le vide pendant 30 secondes. Afin de libérer les ressources du processeur, nous utilisons l'instruction Visual Basic DoEvents qui permet de rendre la main à chaque passage. Une fois les 30 secondes écoulées, l'appel de la fonction recuperer_web est lancé. Ainsi une nouvelle extraction est réalisée depuis le Web pour réactualiser le taux de change. Comme cet incrément de temps est inscrit dans une boucle While infinie, le même traitement est réalisé toutes les 30 secondes. Ce processus doit prendre effet dès l'ouverture du classeur. Or VBA Excel propose un gestionnaire d'événements dédié que nous avons déjà exploité à maintes reprises.
  • Dans l'explorateur de projets, double cliquer sur l'élément ThisWorkbook,
  • En haut de sa feuille de code, dérouler la première liste déroulante,
  • Choisir l'objet Workbook,
Instantanément, nous créons ainsi la procédure événementielle Workbook_Open(). Tout code inscrit entre ses bornes s'exécutera à l'ouverture du classeur.
  • Entre les bornes de la procédure, ajouter les deux appels de fonction comme suit :
recuperer_web
appel_recurrent


Au chargement du classeur Excel, la procédure recuperer_web est d'abord appelée. Une première extraction du taux de change depuis le Web est ainsi réalisée instantanément. De fait, les données se mettent à jour dès l'ouverture. Dans la foulée, l'appel de la fonction appel_recurrent est lancé. Ainsi l'extraction récurrente et permanente du taux de change réactualisé est lancée. Il arrive parfois que les taux de change ne varient pas d'une minute sur l'autre. En revanche, tous les calculs Excel se mettent à jour dès qu'un événement est déclenché. Nous proposons donc d'inscrire une fonction dynamique de temps dans l'une des cellules de la feuille.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • En cellule I10, écrire la formule suivante : =MAINTENANT(),
Cette dernière retourne la date et l'heure à la minute près.
  • Fermer le classeur en l'enregistrant puis le rouvrir,
Vous devez constater la réactualisation du taux de change et de l'information sur l'heure. Si vous patientez quelques minutes, vous devez constater la mise à jour de ces deux informations toutes les 30 secondes. C'est l'événement généré par VBA Excel qui impose le recalcul automatique de la feuille.

Extraire dynamiquement les données internet par code VBA pour mises à jour des calculs automatiquement

En définitive, l'extraction dynamique des données issues du Web par le code Visual Basic est un succès. Elle ouvre de nombreuses possibilités pour des applicatifs professionnels connectés.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn