Importer des données à partir d’un fichier JSON, Excel VBA
Voici le code VBA détaillé pour importer des données à partir d’un fichier JSON, avec une explication.
Code VBA : Importer des données depuis un fichier JSON
Sub ImporterDonneesJSON()
' Déclaration des variables nécessaires
Dim CheminFichierJSON As String
Dim ContenuFichier As String
Dim JSON As Object
Dim i As Integer
Dim ws As Worksheet
Dim objetJSON As Object
Dim cle As Variant
' Définir le chemin du fichier JSON
CheminFichierJSON = Application.GetOpenFilename("Fichiers JSON (*.json), *.json", , "Sélectionner un fichier JSON")
' Vérifier si un fichier a été sélectionné
If CheminFichierJSON = "False" Then
MsgBox "Aucun fichier sélectionné. Arrêt de l'exécution."
Exit Sub
End If
' Ouvrir le fichier JSON et lire son contenu dans une chaîne de caractères
Open CheminFichierJSON For Input As #1
ContenuFichier = Input$(LOF(1), 1)
Close #1
' Analyser le contenu JSON avec la bibliothèque VBA-JSON (il faut inclure la bibliothèque JSON)
Set JSON = JsonConverter.ParseJson(ContenuFichier)
' Créer une nouvelle feuille de calcul pour y importer les données
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "DonneesImporteesJSON"
' Supposons que les données JSON sont un tableau d'objets
i = 1 ' Commencer à écrire les données à partir de la première ligne
' Boucle à travers le tableau JSON (supposons que la structure du JSON soit un tableau d'objets)
For Each objetJSON In JSON
' Boucle à travers chaque paire clé-valeur dans l'objet JSON
For Each cle In objetJSON.Keys
' Écrire la clé (nom de la colonne) dans la première ligne
If i = 1 Then
ws.Cells(1, objetJSON.Keys.IndexOf(cle) + 1).Value = cle
End If
' Écrire la valeur dans la ligne et la colonne correspondantes
ws.Cells(i + 1, objetJSON.Keys.IndexOf(cle) + 1).Value = objetJSON(cle)
Next cle
i = i + 1 ' Passer à la ligne suivante
Next objetJSON
MsgBox "Importation des données terminée avec succès!"
End Sub
Explication détaillée du code :
Ce code est une macro Excel VBA conçue pour importer des données depuis un fichier JSON dans une feuille de calcul Excel. Voici une explication des composants clés :
1. Sélection du fichier via une boîte de dialogue
CheminFichierJSON = Application.GetOpenFilename("Fichiers JSON (*.json), *.json", , "Sélectionner un fichier JSON")
- Cette ligne ouvre une boîte de dialogue permettant à l’utilisateur de sélectionner le fichier JSON à importer. Elle filtre les types de fichiers pour ne montrer que les fichiers .json.
- Application.GetOpenFilename renvoie le chemin du fichier sélectionné, ou False si aucun fichier n’est sélectionné. Si aucun fichier n’est sélectionné, le code s’arrête et affiche un message.
2. Lecture du contenu du fichier JSON
Open CheminFichierJSON For Input As #1 ContenuFichier = Input$(LOF(1), 1) Close #1
- Cette section ouvre le fichier JSON sélectionné en mode lecture (Open CheminFichierJSON For Input As #1).
- Input$(LOF(1), 1) lit le contenu entier du fichier et le stocke dans la variable ContenuFichier. LOF(1) donne la longueur du fichier en octets.
- Enfin, Close #1 ferme le fichier après avoir lu son contenu.
3. Analyse du contenu JSON
Set JSON = JsonConverter.ParseJson(ContenuFichier)
- Cette ligne utilise une bibliothèque de conversion JSON (par exemple
JsonConverter.ParseJson) pour convertir le contenu du fichier JSON, qui est une chaîne de caractères, en un objet utilisable en VBA. - Remarque : Pour que cela fonctionne, vous devez avoir importé la bibliothèque VBA-JSON dans votre projet.
4. Création d’une nouvelle feuille de calcul
Set ws = ThisWorkbook.Sheets.Add ws.Name = "DonneesImporteesJSON"
- Une nouvelle feuille de calcul est créée dans le classeur actuel pour y stocker les données importées.
- Le nom de la feuille est défini sur « DonneesImporteesJSON« , mais vous pouvez le personnaliser.
5. Boucle à travers les données JSON
For Each objetJSON In JSON
- Le code suppose que le fichier JSON contient un tableau d’objets. Cette boucle parcourt chaque objet du tableau.
6. Traitement de chaque objet JSON
For Each cle In objetJSON.Keys
- Pour chaque objet JSON, le code boucle à travers ses paires clé-valeur.
- Les clés représentent les noms des champs (qui deviendront les en-têtes des colonnes dans Excel), et les valeurs sont les données associées à chaque champ.
7. Écriture des données dans la feuille de calcul
If i = 1 Then
ws.Cells(1, objetJSON.Keys.IndexOf(cle) + 1).Value = cle
End If
ws.Cells(i + 1, objetJSON.Keys.IndexOf(cle) + 1).Value = objetJSON(cle)
- Lors de la première itération, le code écrit les clés (les noms des champs) dans la première ligne comme en-têtes de colonnes.
- Lors des itérations suivantes, il écrit les valeurs des champs dans les cellules correspondantes sous les bonnes colonnes.
8. Finalisation du processus
MsgBox "Importation des données terminée avec succès!"
- Une fois que toutes les données sont importées, un message informe l’utilisateur que l’importation a été réalisée avec succès.
Prérequis :
Pour utiliser ce code, vous devez inclure une bibliothèque d’analyse JSON pour VBA, comme la bibliothèque VBA-JSON. Voici les étapes pour l’ajouter à votre projet :
1. Téléchargez la bibliothèque depuis le dépôt GitHub de VBA-JSON.
2. Ajoutez le fichier .bas (par exemple JsonConverter.bas) à votre projet VBA :
- Dans l’éditeur VBA, allez dans Fichier > Importer un fichier… et sélectionnez le fichier JsonConverter.bas que vous avez téléchargé.
Remarques supplémentaires :
- Ce code suppose que le fichier JSON contient un tableau d’objets (comme une liste de dossiers ou d’enregistrements).
- Si la structure de votre fichier JSON est différente (par exemple, des objets imbriqués), vous devrez peut-être ajuster la logique de traitement.
- Assurez-vous que votre fichier JSON est bien formé, sinon l’analyseur générera des erreurs.