Créer un outil de surveillance de données en temps réel, Excel VBA

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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x