Créer un outil de surveillance de données en temps réel, Excel VBA
Voici une explication détaillée sur la manière de créer un outil de surveillance de données en temps réel avec Excel VBA. Nous allons décomposer les étapes, expliquer chaque partie du code et fournir une explication complète.
Outil de Surveillance de Données en Temps Réel avec Excel VBA
Dans cet exemple, nous allons créer un outil permettant à l’utilisateur de surveiller des données en temps réel. L’idée est de récupérer automatiquement des données d’une source externe (comme un service web, une base de données ou un fichier de données) et de les afficher dans une feuille Excel. Le concept clé est de mettre à jour les données à intervalles réguliers sans que l’utilisateur ait besoin d’appuyer sur un bouton.
Étape 1 : Mise en place de la feuille de calcul pour la surveillance des données
Imaginons que nous créons un système de surveillance simple pour les prix des actions. Cependant, ce système peut être adapté à toute autre source de données.
1. Créer la disposition de la feuille
- Colonne A : Symboles des actions
- Colonne B : Prix des actions
- Colonne C : Dernière mise à jour
Pour la simplicité, nous allons avoir une liste de symboles boursiers dans la colonne A. Le prix des actions sera affiché dans la colonne B, et l’heure de la dernière mise à jour dans la colonne C.
Étape 2 : Ajouter le code VBA dans le classeur Excel
1. Ouvrez l’éditeur Visual Basic for Applications (VBA) en appuyant sur Alt + F11.
2. Dans l’éditeur VBA, créez un Module (clic droit sur n’importe quel objet dans le volet « VBAProject » > Insérer > Module).
3. Écrivez le code VBA dans ce module. Ce code mettra à jour périodiquement les prix des actions et affichera les résultats.
Étape 3 : Créer la fonction de surveillance des données en temps réel
Voici un exemple de code VBA :
Dim lastUpdateTime As Double Dim updateInterval As Double Sub StartMonitoring() ' Définir l'intervalle de mise à jour (en secondes) updateInterval = 10 ' Mise à jour toutes les 10 secondes ' Initialiser l'heure de la dernière mise à jour lastUpdateTime = Timer ' Démarrer la boucle de surveillance des données en temps réel Call UpdateStockPrices End Sub Sub UpdateStockPrices() ' Cette sous-routine mettra à jour les prix des actions à intervalles réguliers. Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Feuille1") ' Assurez-vous du nom correct de la feuille Dim currentRow As Long currentRow = 2 ' On commence à partir de la ligne 2, en supposant que la ligne 1 est celle des en-têtes ' Boucle à travers les symboles boursiers et mettre à jour leurs prix Do While ws.Cells(currentRow, 1).Value <> "" Dim stockSymbol As String Dim stockPrice As Double Dim lastUpdated As Date stockSymbol = ws.Cells(currentRow, 1).Value stockPrice = GetStockPrice(stockSymbol) ' Fonction pour obtenir le prix de l'action lastUpdated = Now ' Horodatage actuel pour la dernière mise à jour ' Mettre à jour le prix de l'action et l'heure de mise à jour dans la feuille ws.Cells(currentRow, 2).Value = stockPrice ws.Cells(currentRow, 3).Value = lastUpdated currentRow = currentRow + 1 Loop ' Après la mise à jour, attendre l'intervalle défini, puis mettre à jour à nouveau If Timer - lastUpdateTime >= updateInterval Then lastUpdateTime = Timer Application.OnTime Now + TimeValue("00:00:10"), "UpdateStockPrices" End If End Sub Function GetStockPrice(symbol As String) As Double ' Cette fonction simule la récupération des prix des actions depuis un service web ou une API. ' Dans la pratique, vous remplaceriez ceci par une véritable logique de récupération de données (ex : depuis une API). ' Pour cet exemple, on retourne un prix d'action aléatoire GetStockPrice = Round(Rnd() * 100 + 50, 2) ' Prix aléatoire entre 50 et 150 End Function
Explication du code
1. Sub StartMonitoring()
- Cette sous-routine initialise le système de surveillance. Elle définit updateInterval à 10 secondes (ce délai entre chaque mise à jour) et appelle la sous-routine UpdateStockPrices pour commencer à mettre à jour les données.
2. Sub UpdateStockPrices()
- C’est la sous-routine principale qui se charge de mettre à jour les prix des actions. Elle parcourt tous les symboles d’actions dans la colonne A, récupère le prix de l’action (via la fonction GetStockPrice), et met à jour les cellules correspondantes dans les colonnes B et C avec le prix et l’horodatage actuel.
- La boucle continue jusqu’à ce qu’elle rencontre une cellule vide dans la colonne A.
- Après la mise à jour des prix des actions, la sous-routine attend l’intervalle défini avant de s’exécuter à nouveau. La méthode Application.OnTime est utilisée pour planifier l’exécution suivante de UpdateStockPrices.
3. Function GetStockPrice()
- Cette fonction simule la récupération des prix des actions. Dans une application réelle, vous pourriez remplacer cela par du code qui interroge une source de données en direct, comme une API financière (par exemple, l’API Alpha Vantage, Yahoo Finance API, etc.).
- Dans cet exemple, la fonction génère un prix d’action aléatoire pour simuler la mise à jour en temps réel.
Étape 4 : Tester l’outil
1. Pour commencer à surveiller les données, vous devez appeler la sous-routine StartMonitoring. Vous pouvez le faire en ajoutant un bouton à la feuille Excel :
- Allez dans la feuille Excel, cliquez sur Insertion, puis sélectionnez un bouton dans les contrôles de formulaire.
- Faites un clic droit sur le bouton et choisissez Attribuer une macro…. Sélectionnez StartMonitoring dans la liste des macros disponibles.
- Cliquez sur le bouton et il commencera à surveiller les prix des actions en temps réel.
2. Vous remarquerez que les prix des actions dans la colonne B et l’heure de la dernière mise à jour dans la colonne C se mettront à jour toutes les 10 secondes.
Étape 5 : Modifications pour une utilisation réelle
1. Utilisation de vraies sources de données :
-
- Pour récupérer les prix réels des actions, vous devrez modifier la fonction GetStockPrice afin de récupérer des données en direct via une API web. Voici un exemple de la manière dont vous pourriez faire cela avec XMLHttpRequest pour appeler une API :
Function GetStockPrice(symbol As String) As Double Dim xhr As Object Set xhr = CreateObject("MSXML2.XMLHTTP") Dim url As String url = "https://api.example.com/stock?symbol=" & symbol xhr.Open "GET", url, False xhr.Send ' Parser la réponse JSON (en supposant que l'API renvoie un objet JSON avec le prix de l'action) Dim json As Object Set json = JsonConverter.ParseJson(xhr.responseText) ' Supposons que le prix soit dans le champ "price" GetStockPrice = json("price") End Function
Vous devrez mettre en place un gestionnaire d’erreurs pour gérer les problèmes de réseau, les symboles invalides ou les données indisponibles.
2. Considérations sur la performance :
- Le fait de mettre à jour les données en continu peut être exigeant en termes de ressources système. Dans une utilisation réelle, réfléchissez à l’impact des mises à jour fréquentes, surtout si vous travaillez avec de grands ensembles de données.
- Vous pourriez ajouter des fonctionnalités supplémentaires, comme l’enregistrement des valeurs précédentes pour des comparaisons, l’ajout d’alertes lorsque les prix franchissent certains seuils, ou même l’envoi de courriels ou de messages lorsqu’un événement particulier se produit.
3. Fonctionnalités avancées :
- Graphiques : Vous pourriez ajouter des graphiques pour suivre visuellement les variations des prix des actions au fil du temps.
- Données historiques : Envisagez de stocker les données historiques dans une autre feuille pour analyser l’évolution des données surveillées sur plusieurs jours ou semaines.
Conclusion
C’est un exemple de base de la mise en place d’un outil de surveillance de données en temps réel dans Excel VBA. Il utilise des mises à jour périodiques avec la méthode Application.OnTime pour rafraîchir les données à intervalles réguliers. Dans une application réelle, vous connecteriez l’outil à une source de données en direct (comme une API web) pour obtenir des données en temps réel. Cette approche est évolutive et adaptable à de nombreuses tâches de surveillance de données en temps réel.