
Envoyé par
fifi5622
a quoi sa sert les dim avec les $ % & ( jamais utilisé ça moi )
C'est un héritage du grand-père du VBA, le BASIC, pour déclarer les variables.
Jette un œil pendant l'exécution à la fenêtre Variables locales ou encore à l'aide VBA des types de données …

Envoyé par
fifi5622
moi je vais m' arrêter par la pour ce post
Ce serait ballot de louper l'essentiel : l'accès au json via une structure objet !
Car si VBA ne dispose pas en standard d'une structure objet pour traiter des données au format json
- à l'époque json ne devait pas exister ou n'était pas courant et à quoi bon vu que ce n'est que du texte structuré -
sous Windows il reste ouvert et peut accéder à des fonctionnalités externes comme on l'a vu dans les codes précédents :
accès à des objets ActiveX pour exécuter une requête ou des expressions rationnelles …
Surtout que les données json du lien étant un cas d'école, respectant bien la norme, pas d'incohérence entre les lignes,
ce serait dommage de se priver de l'accès au JScript permettant de lire les données via un modèle objet.
Pour voir sa structure on peut par exemple créer une variable objet sur la racine des données
mais on l'a connait déjà car on l'a visualisée via l'outil d'inspection d'un navigateur !
Les noms des champs des données json devenant des propriétés directement exploitables dans le code,
il suffit juste de respecter la casse (voir les lignes n°12 & 21), c'est bien pratique pour réordonner les informations :
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
| Sub DemoJSon()
Dim oJS As Object, oNautes As Object, R&, Arg As Object
Set oJS = CreateObject("ScriptControl")
oJS.Language = "JScript"
ActiveSheet.UsedRange.Clear
With CreateObject("MSXML2.XMLHttp")
.Open "GET", "http://www.geny.com/flux-donnees-fiche-entraineur?id_entraineur=1004963", False
.setRequestHeader "DNT", "1"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64)"
On Error Resume Next
.send
Set oNautes = oJS.Eval("(" & .responseText & ")").ResultSet.lstChevauxPersonne
On Error GoTo 0
End With
If oNautes Is Nothing Then Beep: Set oJS = Nothing: Exit Sub
[D1:G1].Value = Split("NOM COURSES PLACES VICTOIRES")
R = 1
For Each Arg In oNautes
R = R + 1
With Arg
Cells(R, 4).Resize(, 4).Value = Array(.nomCheval, .courses, .places, .victoires)
End With
Next
Set oJS = Nothing: Set oNautes = Nothing
End Sub |
On peut même en créer une variante selon les titres des colonnes présentes dans la feuille de calculs,
évitant de créer autant de procédures que de présentations différentes …
Cadeau bonus : une référence cinématographique, voire même biblique ou odyséenne,
en rapport avec le titre de cette discussion est cachée dans ce code !
Tout comme celle cachée dans la première procédure expliquant pourquoi à la romaine …
_________________________________________________________________________________________________________
A force de sacrifier l’essentiel à l’urgent, on oublie l’urgence de l’essentiel. (Edgar Morin)
Partager