Importer en json dans Excel
Bravo Pierre, le pape du json ...
Je suis assez d'accord
J'ai donc commencé mon premier code, tout s'affiche bien dans la fenêtre d’exécution,
mais quand je veux affiché les données sur une feuille je n'ai que la dernière ligne
Voici le code que j'ai saisie
Sub Calten_2()
Dim DataSet As Object, Prg As Object, Elem As Object, Elem2 As Object, lg As Integer
Dim site As String, i As Long
With Sheets("Feuil1")
Set DataSet = Rcdst_Jsn(.Range("A1").Value)
Set Prg = DataSet.programme
'Debug.Print Prg.dateProgrammeActif
Sheets("Feuil1").Range("A5") = Prg.dateProgrammeActif
Sheets("Feuil1").Range("B5") = Prg.timezoneOffset
'Debug.Print Prg.timezoneOffset
'etc ...
i = 5
For Each Elem In Prg.reunions
.Cells(i, 4).Value = Elem.hippodrome.libelleCourt
.Cells(i, 5).Value = Elem.hippodrome.libelleCourt
'Debug.Print Elem.hippodrome.libelleCourt
'etc ...
For Each Elem2 In Elem.courses
.Cells(i, 6).Value = Elem2.libelle
'Debug.Print Elem2.libelle
'etc ...
Next Elem2
'etc ...
Next Elem
End With
Set DataSet = Nothing
Set Prg = Nothing
End Sub
Function Rcdst_Jsn(site As String) As Object
Dim ScriptControl As Object
Set ScriptControl = CreateObject("MSScriptControl.ScriptControl")
ScriptControl.Language = "JScript"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", site, False
.send
Set Rcdst_Jsn = ScriptControl.Eval("(" & .responsetext & ")")
End With
End Function
Et donc j'ai comme résultat ceci :
Comment procéder pour avoir toutes les courses et tous les hippodromes etc...?
Merci d'avance
@Calten:
Ici dans le code exemple le
Debug.Print
affiche le résultat dans la fenêtre exécution du VBA (Ctrl+G), il est simple de l'écrire dans des cellules d'une feuille quelconque (sans oublier d'incrémenter le n° le ligne au fur et à mesure des For Each), voir les exemples précédents.
@Steelson : tu assures bien aussi sur ce sujet!
@Calten:
Ici dans le code exemple le
Debug.Print
affiche le résultat dans la fenêtre exécution du VBA (Ctrl+G), il est simple de l'écrire dans des cellules d'une feuille quelconque (sans oublier d'incrémenter le n° le ligne au fur et à mesure des For Each), voir les exemples précédents.@Steelson : tu assures bien aussi sur ce sujet!
Donc si je veux les uns à la suite des autres il faut que j'écrive :
i = 5
For Each Elem In Prg.reunions
.Cells(i, 4).Value = Elem.hippodrome.libelleCourt
i = 6
For Each Elem In Prg.reunions
.Cells(i, 4).Value = Elem.hippodrome.libelleCourt
I serait la ligne et Cell la cellule
Donc j'aurais ligne 5 un hippodrome et ligne 6 un autre, mais par exemple si il y à 8 hipodromes et que mon code s'arrête à i = 7 je n'ai pas le 8 ème ...
Ici dans le code exemple le
Debug.Print
affiche le résultat dans la fenêtre exécution du VBA (Ctrl+G), il est simple de l'écrire dans des cellules d'une feuille quelconque (sans oublier d'incrémenter le n° le ligne au fur et à mesure des For Each), voir les exemples précédents.
lg = lg + 1
Oui pierrep56, j'ai relu le post merci, voilà j'ai tapé ce code:
lg = 7
For Each Elem In Prg.reunions
.Range("A" & lg).Value = Elem.hippodrome.libelleCourt
lg = lg + 1
'etc ...
For Each Elem2 In Elem.courses
.Range("B" & lg).Value = Elem2.libelle
lg = lg + 1
J'ai les données en colonne comme il faut, merci beaucoup.