j'utilise http://json.parser.online.fr/ et il a parsé tous les fichiers que je lui ai présenté
j'utilise http://json.parser.online.fr/ et il a parsé tous les fichiers que je lui ai présenté
Salut
Grâce à WinJerome, que je remercie, j'ai compris comment fonctionnait la bibliothèque.
Voici un code qui lit les résultats et les place dans un tableau. Il fonctionne avec le texte du lien que tu m'as donné, dans lequel j'ai enlevé l'espace en trop au niveau de la valeur 512 du cheval 2398870. Il faudrait peut-être tester avec le Json original.
[EDIT: Optimisation du code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub TestTierce() Dim Résultat As Object Dim DateRésultat Dim r As Range Dim Cheval As Object Set Résultat = ParseJson(shSource.Range("a1").Value) DateRésultat = Left(Replace(Résultat("ResultSet")("dateMAJ"), "T", " "), 19) For Each Cheval In Résultat("ResultSet")("partants") Set r = Range("Tableau1").ListObject.ListRows.Add().Range r(1).Value = DateRésultat r(2).Value = Cheval("idCheval") r(3).Value = Cheval("distance") r(4).Value = Cheval("Deferre") r(5).Value = Cheval("nomCheval") r(6).Value = Cheval("numParticipation") r(13).Value = Cheval("idJockey") r(14).Value = Cheval("sexeAge") r(15).Value = Cheval("driver") r(7).Value = Cheval("stats")("pourcentageReussite") r(8).Value = Cheval("stats")("nbVictoires") r(9).Value = Cheval("stats")("nbCourses") r(10).Value = Cheval("stats")("nbPlaces") r(11).Value = Cheval("stats")("musique") r(12).Value = Cheval("stats")("ecart") Next End Sub
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
Un grand merci à tous
Bonjour,
Tout d'abord merci pour les Echanges de ce forum qui sont très riches.
J’utilise la librairie JsonConverter.bas pour parser des fichiers Json et elle marche très bien. Néanmoins, je n'arrive pas à développer une fonction permettant de prenant en paramètre le chemin d'une élément Json (path) et me retourner la valeur de cet élément.
en gr, je voudrias transformer la procédure suivante en fonction qui prend en paramètre le chemin "("listeFinancement")(1)("listePersonnePhysique")(1)("dateNaissance")" qui est dans le code.
Merci beaucoup pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Public Sub getValue() Dim JsonString As String Dim JsonObject As Object, http As Object Dim item As Object Dim i As Long Dim ws As Worksheet Dim fichier As String ' ActiveSheet.Cells.Clear ' With Application.FileDialog(msoFileDialogFilePicker) ' .Show ' On Error Resume Next ' fichier = .SelectedItems.item(1) ' On Error GoTo 0 ' End With ' If fichier > "" Then [A1].CurrentRegion = fichier ' origine des informations Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", [A1], False http.send JsonString = http.responsetext ' decodage Set ws = Worksheets("DDF") Set JsonObject = JsonConverter.ParseJson(JsonString) 'MsgBox JsonObject("listeFinancement")(1)("listePersonnePhysique")(1)("dateNaissance") End Sub
Bonjour,
Si votre json contient un tableau d'éléments avec cette structure :
[e1,e2,e3,...,en]
alors pour repérer chaque élément il faut faire :
Si maintenant votre json contient un tableau de dictionnaires :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 set e1 = JsonObject(1) ' pour e1 set e2 = JsonObject(2) ' pour e2 'etc..
[{"Nom": "Dupont",""Prénom"": ""Jean""},{"Nom": "Durand",""Prénom"": ""Marc""},...,{"Nom": "Martin",""Prénom"": ""Luc""}]
alors pour obtenir par exemple, le nom de la deuxième personne, il faut faire :
Cdlt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MsgBox JsonObject(2)("Nom") ' pour "Durand" 'etc..
Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération
Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
Gestion sur un planning des présences et des absences des employés
Gestion des rendez-vous sur un calendrier mensuel
Importer un fichier JSON dans une base de données Access :
Import Fichier JSON
Bonjour.
Merci pour la réponse. Mon fichier est Json qui contient tout type JSON.
Ce que je veux est une fonction VBA qui prend en paramètre le chemin d'un élément et me retourne un valeur
Peut-être essayer ce type de code :
L'argument chemin() contient en fait une liste d'arguments, exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Function RechercherElement(JsonString As String, ParamArray chemin()) As String Dim JsonObject As Object Set JsonObject = ParseJson(JsonString) Select Case UBound(chemin) Case 0 RechercherElement = JsonObject(chemin(0)) Case 1 RechercherElement = JsonObject(chemin(0))(chemin(1)) Case 2 RechercherElement = JsonObject(chemin(0))(chemin(1))(chemin(0)) End Select End Function
2,"Nom"
pour
(2)("nom")
Exemple d'utilisation :
Il faut essayer de vous en inspirer ou de l'adapter, bien sûr ça ne marchera pas directement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 JsonString="[{""Nom"": ""Dupont"",""Prénom"": ""Jean""},{""Nom"": ""Durand"",""Prénom"": ""Marc""},{""Nom"": ""Martin"",""Prénom"": ""Luc""}]" valeur = RechercherElement(JsonString, 2,"Nom")
Cdlt,
Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération
Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
Gestion sur un planning des présences et des absences des employés
Gestion des rendez-vous sur un calendrier mensuel
Importer un fichier JSON dans une base de données Access :
Import Fichier JSON
Bonjour,
Merci beaucoup pour cette aide. J'ai essayer de l'adapter pour prendre des chemins avec une profondeur supérieur à 3 et un chemin avec les éléments séparé par un point (par exemple 2.Nom) et voici ce que ca donne :
J'obtiens des erreurs que je n’arrive pas à résoudre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Function RechercherElement(JsonString As String, path As String) As String Dim JsonObject As Object Dim Tableau() As String Dim i As Integer Set JsonObject = ParseJson(JsonString) Tableau = Split(path, ".") While i <= UBound(Tableau) Set JsonObject = JsonObject(Tableau(i)) i = i + 1 Wend RechercherElement = JsonObject(Tableau(i)) End Function
Merci par avance
Cordialement
Essayez ceci :
Cdlt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Public Function RechercherElement(JsonString As String, path As String) As String Dim JsonObject As Object Dim item As Object Dim Tableau() As String Dim i As Integer Set JsonObject = ParseJson(JsonString) Tableau = Split(path, ".") i = 0 While i < UBound(Tableau) If IsNumeric(Tableau(i)) Then Set JsonObject = JsonObject(CLng(Tableau(i))) Else Set JsonObject = JsonObject(Tableau(i)) End If i = i + 1 Wend RechercherElement = JsonObject(Tableau(i)) End Function
Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération
Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
Gestion sur un planning des présences et des absences des employés
Gestion des rendez-vous sur un calendrier mensuel
Importer un fichier JSON dans une base de données Access :
Import Fichier JSON
Merci beaucoup User. Ça marche très bien.
Très bonne journée
Pas de souci, bon week-end
Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération
Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
Gestion sur un planning des présences et des absences des employés
Gestion des rendez-vous sur un calendrier mensuel
Importer un fichier JSON dans une base de données Access :
Import Fichier JSON
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager