Recherche de nombres

Bonjour,

J'ai utilisé la fonction suivante qui me permet de faire une requête HTML :

Function GetHTML(URL As String) As String
    Dim HTML As String
    Dim a, b, c, e As String
    Dim d As Integer

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        GetHTML = .ResponseText
    End With
a = InStr(1, GetHTML, "TradeValue")
b = Right(GetHTML, Len(GetHTML) - a + 1)
c = Left(b, InStr(1, b, "CIFValue") - 3)
d = InStr(1, c, ":")
e = Right(c, Len(c) - d)
MsgBox e
End Function

Cette fonction me redonne la valeur de la TradeValue sachant que j'ai rentré cette url :

"https://comtrade.un.org/api/get?max=500&type=C&freq=A&px=H0&ps=all&r=842&p=156&rg=1&cc=8470"

Cela marche bien.

Mon problème maintenant est que je dois chercher les tradeValue pour toutes les dates (1991 à 2017).

J'ai mis en pièce jointe la type de texte que ça donne.

Avez-vous une idée pour faire cela ?

Merci d'avance

capture

Bonjour et bienvenue

Il s'agit en effet d'uns structure appelée json ... on peut la décrypter via les outils excel.

Si personne n'est venu ici avant ce soir, je m'y mettrai volontiers.

Bonjour et bienvenue

Il s'agit en effet d'uns structure appelée json ... on peut la décrypter via les outils excel.

Si personne n'est venu ici avant ce soir, je m'y mettrai volontiers.

Bonjour,

Pas moi je connais que Json et les argonautes ou json et la toison d'or …..

(histoire de faire mon 1000 ème message lol )

bonjour

avec le menu d'Excel Données Obtenir "de fichier" "json"

(si tu as Excel 2010 ou 2013 voir https://www.youtube.com/watch?v=gwW2CDdvUUs

et tu as le menu Power Query)

amitiés

Bonjour,

Tout d'abord merci pour vos réponses.

Je dois télécharger PowerQuery c'est bien cela ?

si tu as Excel 2010 ou 2013 oui

Oui j'ai excel 2010.

Ne pourrais t-on pas faire sans passer par installer cet outil mais plutôt en utilisant uniquement les fonctions left, right, substitute, instr... ?

Oui c'est possible, moins pro, mais comme la structure json c'est du texte formaté c'est possible.

S'il y a des occurrences multiples, utilise alors split.

Sub decoder()

    Cells(1, 1).CurrentRegion.Offset(1, 0).ClearContents

    URL = "https://comtrade.un.org/api/get?max=500&type=C&freq=A&px=H0&ps=all&r=842&p=156&rg=1&cc=8470"
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", URL, False
    http.send
    jsonstring = http.responseText

    tableau = Split(jsonstring, """period""")
    For i = 1 To UBound(tableau)
        Cells(i + 1, 1) = Split(Split(tableau(i), ":")(1), ",")(0)
        Cells(i + 1, 2) = Split(Split(tableau(i), """TradeValue"":")(1), ",")(0)
    Next

End Sub

Bonjour,

Je viens de voir votre travail. Cela fonctionne parfaitement. Un grand merci à tous pour votre aide.

Il me reste plus qu'à bien comprendre chaque ligne pour pouvoir le refaire moi-même.

Bien cordialement.

Rechercher des sujets similaires à "recherche nombres"