Variable de texte dans une Function

...suite...

Ton problème n'est pas un problème d'intégration, d'une clé,

ton problème vient d'ici :

        For Each Elem In Json.rows
            For Each Elem1 In Elem.elements
                ok = Not (Elem1.status = "ZERO_RESULTS")
                AversB.dist = Elem1.distance.Value / 1000
                AversB.duree = Elem1.duration.Value / 24 / 60 / 60
            Next Elem1
        Next Elem

je vais le résoudre mais je ne sais ni quand ni comment encore !

une solution

edit : obsolète

In fine voici TA SOLUTION

Function AversB(A As String, B As String) As deAaB
Dim Depart As String, Arrivee As String, Site As String
Dim Json As String
Dim Html As Object
Dim temp As String
Dim NUMKEY As String
NUMKEY = Range("API_KEY").Value

    With Sheets("distancier")
        Depart = Ote_accents(A)
        Arrivee = Ote_accents(B)

        On Error Resume Next
        Site = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" & _
                Depart & "&destinations=" & Arrivee & "&mode=driving&language=fr-FR&key=" & NUMKEY

        Set ScriptControl = CreateObject("MSScriptControl.ScriptControl")
        ScriptControl.Language = "JScript"

        Set Html = CreateObject("MSXML2.XMLHTTP")
        With Html
            .Open "GET", Site, False
            .send
            Json = .responseText
        End With

        AversB.ptA = Replace(Split(Split(Split(Json, "destination_addresses")(1), "[")(1), "]")(0), """", "")
        AversB.ptB = Replace(Split(Split(Split(Json, "origin_addresses")(1), "[")(1), "]")(0), """", "")
        AversB.dist = Val(Split(Split(Split(Json, "distance")(1), "value"" : ")(1), "}")(0)) / 1000
        AversB.duree = Val(Split(Split(Split(Json, "duration")(1), "value"" : ")(1), "}")(0)) / 24 / 60 / 60

    End With

End Function

Et tu peux enlever la clé ... ce sera pareil !

C'était un problème de décodage de JSON ... as-tu changé de PC ou de version excel ?

Bonjour Steelson !

Cela semble fonctionnait impeccablement !

Et la prise en compte de la clé s'effectue bien, car mon compteur de requêtage sur la console Google Cloud s'incrémente bien !

Merci mille fois pour ce joli travail !!!!!

Parfait !

Bonjour,

Je reviens sur ce sujet !

J'ai entrepris de reprendre certains fondamentaux, en commençant par le décryptage d'un json. Pas facile même si le web donne beaucoup d'exemples (incomplets ou inachevés).

Dans ton cas que je rappelle ici , au prix d'une petite semaine d'efforts ... :

        For Each Elem In Json.rows
            For Each Elem1 In Elem.elements
                ok = Not (Elem1.status = "ZERO_RESULTS")
                AversB.dist = Elem1.distance.Value / 1000
                AversB.duree = Elem1.duration.Value / 24 / 60 / 60
            Next Elem1
        Next Elem

        ScriptControl.AddCode "Object.prototype.item=function( i ) { return this[i] } ; "
        AversB.ptA = Json.origin_addresses.item(0)
        AversB.ptB = Json.destination_addresses.item(0)

D'abord il eut été judicieux de mettre le script de prototypage AVANT la recherche de la distance et de la durée.

Ensuite la structuration des données est un peu plus complexe que celle que tu explores.

La solution est la suivante :

        ScriptControl.AddCode "Object.prototype.item=function( i ) { return this[i] } ; "
        AversB.ptA = Json.origin_addresses.item(0)
        AversB.ptB = Json.destination_addresses.item(0)
        AversB.dist = Json.depuis.item(0).jusque.item(0).distance.valeur
        AversB.duree = Json.depuis.item(0).jusque.item(0).duree.valeur

sachant que, difficulté supplémentaire !, le prototypage est sensible à la casse et VBA corrige rows, elements, status, duration, text et value en y mettant une majuscule, bigre ...

j'ai donc corrigé aussi S = .responsetext en modifiant les keys

    S = Replace(S, "rows", "depuis")
    S = Replace(S, "elements", "jusque")
    S = Replace(S, "duration", "duree")
    S = Replace(S, "status", "ok")
    S = Replace(S, "value", "valeur")
    S = Replace(S, "text", "texte")

Nota : j'avais conservé cet exemple pour le re-travailler.

Et puis je suis retombé ici où la réponse (par traitement de texte) avait bien été donnée ... par moi-même oups !

En tous cas voici la solution "pro" même si je continue souvent d'utiliser des solutions texte dans le web, les json et les xml.

Merci beaucoup pour votre travail et vos réponses !!!

Rechercher des sujets similaires à "variable texte function"