Importer en json dans excel Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
c
calten
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 30 mai 2019
Version d'Excel : 2010 FR

Message par calten » 2 juin 2019, 14:34

Steelson a écrit :
2 juin 2019, 13:09
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,

Image

mais quand je veux affiché les données sur une feuille je n'ai que la dernière ligne

Image

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 :
Image
Comment procéder pour avoir toutes les courses et tous les hippodromes etc...?
Merci d'avance
Avatar du membre
pierrep56
Membre dévoué
Membre dévoué
Messages : 981
Appréciations reçues : 152
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 2 juin 2019, 14:44

@Calten:
pierrep56 a écrit :
2 juin 2019, 10:19
...
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!
c
calten
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 30 mai 2019
Version d'Excel : 2010 FR

Message par calten » 2 juin 2019, 15:03

pierrep56 a écrit :
2 juin 2019, 14:44
@Calten:
pierrep56 a écrit :
2 juin 2019, 10:19
...
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 ...
Avatar du membre
pierrep56
Membre dévoué
Membre dévoué
Messages : 981
Appréciations reçues : 152
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 2 juin 2019, 16:17

pierrep56 a écrit :
2 juin 2019, 10:19
...
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
c
calten
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 30 mai 2019
Version d'Excel : 2010 FR

Message par calten » 2 juin 2019, 17:00

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.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message