Intégration de Sources de Données Externes avec des API, Excel VBA
Voici une explication détaillée et un exemple de code VBA pour intégrer des sources de données externes via des API dans Excel.
Introduction
L’intégration de données externes dans Excel via VBA (Visual Basic for Applications) est souvent réalisée grâce aux API (Interfaces de Programmation d’Applications). Les API permettent aux applications de communiquer entre elles. Dans le contexte d’Excel, les API permettent de récupérer des données externes (par exemple, des données météorologiques, des informations boursières, des données sur les cryptomonnaies, etc.) directement dans Excel, ce qui permet d’automatiser ce processus et de gérer les données de manière plus efficace.
Dans cet exemple, nous allons utiliser VBA pour nous connecter à une API RESTful, envoyer une requête, récupérer les données au format JSON et les afficher dans Excel.
Étapes pour intégrer une API avec VBA
1. Configurer la référence à la bibliothèque Microsoft XML, v6.0 : Avant d’interagir avec une API en VBA, vous devez ajouter une référence à la bibliothèque Microsoft XML, qui permet de faire des requêtes HTTP.
- Ouvrez l’éditeur Visual Basic pour Applications (VBA) en appuyant sur Alt + F11.
- Allez dans Outils > Références.
- Cherchez Microsoft XML, v6.0 et cochez-la (cela est nécessaire pour effectuer des requêtes HTTP en VBA).
- Si elle n’est pas disponible, vous pouvez sélectionner la dernière version disponible de Microsoft XML.
2. Processus de la requête API :
- Envoyer une requête à l’URL de l’API en utilisant l’objet XMLHttpRequest.
- Gérer la réponse de l’API, qui est généralement au format JSON.
- Analyser la réponse JSON et extraire les informations pertinentes.
- Afficher les données dans Excel.
Exemple de Code VBA :
Imaginons que nous souhaitons récupérer des données depuis une API publique (par exemple, l’API météo OpenWeather). Voici un exemple détaillé.
Étapes pour configurer et obtenir des données météo avec l’API OpenWeather :
1. Inscrivez-vous sur le site de OpenWeather pour obtenir une clé API.
2. L’URL de l’API pour récupérer les données météo actuelles est la suivante :
3. http://api.openweathermap.org/data/2.5/weather?q={nom_ville}&appid={API_KEY}
Code VBA :
Sub GetWeatherData() ' Variables pour la requête API et la réponse Dim http As Object Dim url As String Dim jsonResponse As String Dim json As Object Dim cityName As String Dim apiKey As String Dim temperature As Double Dim weatherDescription As String ' Nom de la ville et clé API cityName = "Paris" ' Vous pouvez changer cela avec n'importe quelle ville apiKey = "votre_clé_api_ici" ' Remplacez ceci par votre véritable clé API OpenWeather ' URL de l'API pour les données météo url = "http://api.openweathermap.org/data/2.5/weather?q=" & cityName & "&appid=" & apiKey & "&units=metric" ' Créer l'objet XMLHTTP pour envoyer la requête Set http = CreateObject("MSXML2.XMLHTTP") ' Ouvrir la requête HTTP (méthode GET) http.Open "GET", url, False ' Envoyer la requête http.Send ' Obtenir la réponse de l'API jsonResponse = http.responseText ' Analyser la réponse JSON Set json = JsonConverter.ParseJson(jsonResponse) ' Extraire les données du JSON temperature = json("main")("temp") weatherDescription = json("weather")(1)("description") ' Afficher les données dans Excel (on les affiche en A1, A2 et A3) Range("A1").Value = "Ville: " & cityName Range("A2").Value = "Température: " & temperature & " °C" Range("A3").Value = "Météo: " & weatherDescription End Sub
Explication du Code :
1. Variables :
- http : Objet XMLHttpRequest qui permet d’envoyer des requêtes HTTP.
- url : Contient l’URL de l’API (avec le nom de la ville et la clé API).
- jsonResponse : Contient la réponse brute en JSON de l’API.
- json : Objet qui va contenir la réponse JSON analysée.
- cityName et apiKey : Contiennent respectivement le nom de la ville et votre clé API.
- temperature, weatherDescription : Variables pour stocker la température et la description de la météo.
2. Requête API :
- Nous construisons l’URL en concaténant l’URL de base de l’API avec les paramètres nécessaires (cityName, apiKey et units=metric pour avoir la température en Celsius).
- L’objet MSXML2.XMLHTTP est utilisé pour envoyer une requête HTTP de type GET à l’API.
- La méthode Send envoie la requête, et responseText reçoit la réponse brute de l’API.
3. Analyse du JSON :
- La fonction JsonConverter.ParseJson (qui nécessite une bibliothèque tierce pour analyser les données JSON) est utilisée pour convertir la réponse JSON en un objet VBA (généralement un dictionnaire).
- Vous pouvez télécharger le JsonConverter pour VBA ici et l’ajouter à votre projet afin de gérer l’analyse JSON.
4. Extraction des données :
- La température et la description de la météo sont extraites de la réponse JSON à l’aide des clés appropriées (json(« main« )(« temp ») et json(« weather« )(1)(« description »)).
5. Affichage des données dans Excel :
- Les données météo (ville, température et description de la météo) sont affichées dans les cellules A1, A2 et A3.
Remarques Importantes :
- Gestion des erreurs : Il est important d’ajouter une gestion des erreurs dans vos applications réelles. Par exemple, gérez les scénarios où l’API est indisponible ou si le format des données change.
- Limites de fréquence : Certaines API (comme OpenWeather) imposent des limites de requêtes. Assurez-vous de ne pas dépasser ces limites.
- Sécurité des clés API : Soyez prudent avec l’exposition de votre clé API. Vous pouvez la stocker dans un emplacement sécurisé ou utiliser des variables d’environnement pour la protéger.
Conclusion
En utilisant VBA pour interagir avec des API, vous pouvez automatiser la récupération de données depuis des sources externes et les afficher directement dans Excel. Ce processus peut être personnalisé pour n’importe quelle API et type de données, ce qui en fait un outil puissant pour automatiser la gestion des données.