formateur informatique

Rafraîchir les données Excel périodiquement

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Rafraîchir les données Excel périodiquement
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    Vidos astuces Instagram
Sujets que vous pourriez aussi aimer :


Actualiser les données périodiquement

Dans ce nouveau volet VBA Excel, nous allons découvrir une astuce intéressante dans le cas par exemple, d'applications connectées à des données externes. Il est question de gérer des intervalles de temps, pour forcer l'actualisation des données de la feuille à incréments réguliers.

Actualiser les données Excel à intervalles de temps réguliers en VBA

Sur l'exemple illustré par la capture, nous simulons une application connectée à Internet pour récolter des valeurs boursières. En réalité et pour l'exemple, les montants sont ici générés aléatoirement grâce à la fonction Excel Alea.Entre.Bornes. Sur la droite de la feuille, l'utilisateur saisit un intervalle de temps en secondes. Il clique ensuite sur le bouton Actualiser. Dès lors, les données sont rafraichies à chaque fois que l'intervalle est atteint et ce, tant que l'utilisateur n'a pas cliqué sur le bouton Figer pour stopper la boucle de temps. En parallèle, vous notez qu'un graphique rend compte visuellement des évolutions régulières des données.

Classeur Excel à télécharger
Pour la découverte de cette astuce, nous suggérons d'appuyer les travaux sur un classeur Excel offrant notamment ces données générées aléatoirement. Nous découvrons les données numériques à actualiser en ligne 4. Un graphique les représente juste en-dessous. Sur la droite et plus précisément en cellule J5, l'utilisateur doit saisir un intervalle de temps en secondes pour déterminer la fréquence de l'actualisation. Juste en-dessous, un premier bouton doit permettre de lancer le processus de mise à jour à intervalles réguliers. Un second (Figer) doit permettre de stopper ce processus.

Les procédures des boutons
Nous allons le découvrir, le travail est déjà quelque peu avancé. Les boutons sont déjà associés à des procédures de code.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
Une variable publique et deux procédures existent. La variable publique Prochain est typée comme une date. Elle doit représenter l'heure précise à laquelle le prochain événement doit intervenir.

Dim Prochain As Date

Sub Actualiser()

End Sub

Sub Figer()

End Sub


C'est cette heure à la seconde près que nous devrons réactualiser périodiquement pour générer un processus récursif respectant les paliers de temps. Les deux procédures (Actualiser et Figer) sont respectivement associées aux deux boutons de la feuille.

Imposer le recalcul
Comme nous l'avons dit et comme il s'agit d'une simulation, pour faire varier les valeurs numériques générées aléatoirement, nous avons tout d'abord besoin d'imposer le recalcul de la feuille.
  • Dans les bornes de la procédure Actualiser, ajouter l'instruction VBA suivante :
...
Worksheets("Evolution").Calculate
...


Grâce au nom de la feuille passé en paramètre de l'objet Worksheets, nous pointons sur la feuille active. Grâce à sa méthode Calculate, nous ordonnons le recalcul de toutes ses formules. Grâce à une astuce et nous le verrons, cette fonction Actualiser va se mordre la queue. Elle va s'appeler récursivement pour réclamer le recalcul à intervalles de temps réguliers.

Créer la boucle de temps
Maintenant, pour créer la boucle de temps capable d'imposer l'exécution périodique de cette fonction Actualiser, nous devons commencer par définir l'intervalle. Par rapport au temps qu'il est à chaque appel, nous devons ajouter le nombre de secondes défini en cellule J5.
  • A la suite du code de la procédure, ajouter les deux instructions VBA suivantes :
...
Prochain = Now + TimeValue("00:00:" & Range("J5").Value)
Application.OnTime Prochain, "Actualiser"
...


C'est naturellement la variable publique prochain que nous affectons. Grâce à la fonction TimeValue, nous générons une impulsion temporelle en secondes. Nous lui passons le début au format heure ("00:00:") avec les heures et les minutes figées à zéro. Puis, nous lui ajoutons l'information définie par l'utilisateur en secondes (& Range("J5").Value). Cet incrément, nous l'ajoutons au temps qu'il est. Cette information est renvoyée par la fonction VBA Now.

Dès lors, nous exploitons le gestionnaire d'événement OnTime de l'objet Application. Nous l'avions découvert à l'occasion de l'astuce VBA Excel consistant à créer un gestionnaire de tâches. Nous lui indiquons à quel moment se déclencher et les actions à exécuter (Actualiser). C'est ainsi, jusqu'à ordre contraire, que cette fonction va s'appeler récursivement pour ordonner le recalcul des formules de la feuille à intervalles de temps réguliers.

Arrêter la boucle de temps
Pour finir, si l'utilisateur clique sur le bouton Figer, nous devons stopper le processus d'actualisation des données. Pour cela, nous devons de nouveau exploiter le gestionnaire OnTime mais avec un paramètre supplémentaire.
  • Dans les bornes de la procédure Figer, ajouter l'instruction VBA suivante :
...
Application.OnTime Prochain, "Actualiser", , False
...


Nous exploitons de nouveau le gestionnaire OnTime sur le même processus (Actualiser) pour interrompre la boucle de temps (False) au prochain incrément (Prochain). Ce quatrième paramètre réglé à false concerne en effet la programmation de l'événement (schedule).

Il est maintenant temps de tester notre application d'actualisation périodique des données.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • En cellule J5, saisir un intervalle en secondes, comme par exemple 3,
  • Puis, cliquer sur le bouton Actualiser,
Comme vous pouvez l'apprécier, toutes les 3 secondes les données des transactions sont mises à jour et le graphique qui les représente, s'ajuste.

Actualiser les données à intervalles de temps réguliers en VBA Excel

Si vous cliquez sur le bouton Figer, le processus d'actualisation est automatiquement stoppé.

 
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