Importation de données depuis le web, Excel VBA
Nous allons voir comment activer l’onglet Développeur, créer un nouveau classeur Excel, écrire et modifier le code VBA, et enfin exécuter le code.
Étape 1 : Activer l’onglet Développeur
Pour commencer à travailler avec VBA dans Excel, il est nécessaire d’activer l’onglet Développeur. Cet onglet vous permet d’accéder à tous les outils nécessaires pour créer et exécuter des macros VBA.
1. Ouvrez Excel.
2. Allez dans le menu Fichier, puis sélectionnez Options.
3. Dans la fenêtre Options Excel, cliquez sur Personnaliser le ruban dans la colonne de gauche.
4. Sous la section « Onglets principaux » à droite, cochez la case Développeur.
5. Cliquez sur OK.
L’onglet Développeur apparaîtra maintenant dans le ruban d’Excel. Cet onglet contient tous les outils dont vous aurez besoin pour travailler avec des macros et du code VBA.
Étape 2 : Créer un nouveau classeur Excel
Maintenant que l’onglet Développeur est activé, la prochaine étape consiste à créer un nouveau classeur Excel où vous écrirez et testerez votre code VBA.
1. Ouvrez un nouveau classeur Excel ou un classeur existant.
2. Sauvegardez votre classeur au format Excel prenant en charge les macros. Pour cela, allez dans Fichier > Enregistrer sous, puis choisissez le format Classeur Excel avec macros activées (*.xlsm).
Étape 3 : Écrire le code VBA pour importer des données depuis le Web
Maintenant que nous avons préparé le classeur, il est temps d’écrire le code VBA qui permettra d’importer des données depuis un site web dans Excel.
1. Allez dans l’onglet Développeur dans le ruban.
2. Cliquez sur Visual Basic (ou appuyez sur Alt + F11) pour ouvrir l’éditeur VBA.
3. Dans l’éditeur VBA, allez dans Insertion > Module pour créer un nouveau module où vous écrirez votre code.
Voici le code VBA pour importer des données depuis un site web (par exemple, une page qui contient des données sous forme de tableau simple) :
Sub ImporterDonneesDepuisLeWeb() ' Déclarez une variable pour l'URL de la page web Dim url As String url = "https://exemple.com/donnees" ' Remplacez ceci par l'URL de votre choix ' Déclarez une variable pour contenir les QueryTables Dim qt As QueryTable ' Créez une nouvelle QueryTable pour importer les données depuis l'URL Set qt = ActiveSheet.QueryTables.Add(Connection:="URL;" & url, Destination:=Range("A1")) ' Optionnel : Modifiez les propriétés de la QueryTable (par exemple, rafraîchissement toutes les 5 minutes) qt.RefreshPeriod = 5 ' Rafraîchir toutes les 5 minutes qt.Refresh BackgroundQuery:=False ' Exécuter la requête de manière synchrone ' Optionnel : Définissez le formatage des données importées With qt .TextFileColumnDataTypes = Array(1, 1, 1) ' Ajustez le type de données pour chaque colonne si nécessaire End With End Sub
Explication du Code :
- url : L’URL du site web à partir duquel vous souhaitez importer des données (remplacez « https://exemple.com/donnees » par l’URL réelle de la page web).
- QueryTable : C’est l’objet utilisé pour importer des données depuis le web. Il se connecte à l’URL et importe les données dans la cellule A1 de la feuille active.
- RefreshPeriod : Cette propriété permet de définir la fréquence de rafraîchissement des données. Dans ce cas, les données seront rafraîchies toutes les 5 minutes.
- TextFileColumnDataTypes : Cette propriété optionnelle permet de spécifier les types de données pour chaque colonne dans le tableau importé (ajustez selon vos besoins).
Étape 4 : Modifier le Code
Une fois que vous avez écrit le code de base, vous pouvez avoir besoin de l’ajuster en fonction de vos besoins spécifiques. Voici quelques ajustements possibles :
- Modification de l’URL : Remplacez la variable url par l’URL réelle de la page web à partir de laquelle vous souhaitez importer des données.
- Destination : Le paramètre Destination détermine où les données seront placées dans votre feuille Excel. Par défaut, les données seront placées à partir de la cellule A1. Vous pouvez changer cela en spécifiant une autre cellule ou plage (par exemple, Range(« B5 »)).
- Données dynamiques : Si la page web contient des données dynamiques (chargées avec JavaScript), la méthode QueryTable peut ne pas fonctionner correctement. Dans ce cas, vous devrez peut-être explorer d’autres solutions, comme l’utilisation de XMLHTTP ou WinHttpRequest pour récupérer la page HTML et ensuite analyser les données.
Voici un exemple de récupération de la page HTML brute avec XMLHTTP :
Sub RecupererHTMLPageWeb() Dim http As Object Dim url As String Dim reponse As String ' Définissez l'URL de la page web url = "https://exemple.com/donnees" ' Remplacez avec l'URL de votre choix ' Créez un objet de requête HTTP Set http = CreateObject("MSXML2.XMLHTTP") ' Envoyez la requête HTTP pour récupérer le contenu de la page http.Open "GET", url, False http.Send ' Obtenez la réponse (HTML) de la requête reponse = http.responseText ' Affichez le HTML dans la cellule A1 pour inspection ActiveSheet.Range("A1").Value = reponse End Sub
Ce code récupère le HTML de la page et le place dans la cellule A1. Vous pouvez ensuite analyser ce HTML pour extraire les données souhaitées.
Étape 5 : Exécuter le Code
Pour exécuter le code et importer les données depuis le web, suivez ces étapes :
1. Dans l’éditeur VBA, appuyez sur F5 ou cliquez sur le bouton Exécuter dans la barre d’outils pour lancer la macro ImporterDonneesDepuisLeWeb.
2. Les données provenant de la page web devraient être importées dans votre feuille Excel, à partir de la cellule de destination spécifiée (par exemple, A1).
Résultats :
- Le résultat sera les données importées depuis le site web que vous avez spécifié dans l’URL. Si vous avez utilisé la méthode QueryTable, les données seront affichées sous forme de tableau structuré dans votre feuille Excel.
- Si vous avez utilisé la méthode XMLHTTP, le HTML brut de la page sera affiché dans la cellule spécifiée (par exemple, A1).
Dépannage :
- Gestion des erreurs : Si des erreurs surviennent (par exemple, une URL invalide ou un problème de connexion Internet), il peut être utile d’ajouter une gestion des erreurs pour capturer ces erreurs et afficher un message approprié.
Exemple :
On Error GoTo GestionErreur ' Votre code ici Exit Sub GestionErreur: MsgBox "Une erreur est survenue : " & Err.Description
- Restrictions des sites web : Certains sites web bloquent ou restreignent le scraping automatisé. Si cela se produit, vous devrez peut-être envisager des solutions alternatives, comme l’utilisation d’API de scraping ou la modification des en-têtes de la requête HTTP.
Voilà un guide détaillé pour importer des données depuis le web avec VBA dans Excel.