IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

API maps et déploiement sur une colonne [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 84
    Par défaut API maps et déploiement sur une colonne
    Bonjour
    Novice en vba et vu que c'est assez urgent, je souhaiterai votre aide car je patauge depuis un moment déjà ...
    J'ai une colonne avec des codes postaux (sur chaque ligne un code postal différent)
    J'ai un champ textbox3 qui selon la saisie (code postal), renvoi une donnée dans Listbox3 (code postal)
    Je souhaite faire coïncider le code postal du Listbox3 (.value ?) avec celui de la colonne et par ligne, de faire ressortir grâce à l'api de google, la distance et la durée (donc sur 2 colonnes)

    je n'arrive pas à utiliser le déploiement de formule selon la listbox et sur chaque ligne
    merci à qui pourra m'aider

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    comme ce n'est pas la vocation de ce forum, juste lire ses règles, alors effectuer en urgence
    une recherche sur la Toile et dans les discussions comme dans les tutoriels de ce forum …

    ___________________________________________________________________________________________________________
    Je suis Paris, Manchester, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 84
    Par défaut
    des tutos, j'en ai suivi une tonne, je ne dois pas être tomber sur les bons
    je mettrai mes exemples dans l'après-midi, car je ne part pas de zéro et j'ai déjà bien bossé dessus

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 84
    Par défaut
    ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        For ligne = 16 To 4444
            Cells(ligne, 29) = GetDistance(Cells(ligne, 16), TextBox3.Value)
        Next
    End Sub
    exécute une formule qui va rechercher le code postal de ligne en colonne 16 et qui va le comparer à la valeur de Textbox3
    qui est extrêmement longue quand je clique sur le bouton ...


    Le Gesdistance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Function GetDistance(start As String, dest As String)
        Dim firstVal As String, secondVal As String, lastVal As String
        firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
        secondVal = "&destinations="
        lastVal = "&mode=car&language=fr&sensor=false"
        Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
        URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
        objHTTP.Open "GET", URL, False
        objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        objHTTP.send ("")
        If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
        Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
        Set matches = regex.Execute(objHTTP.responseText)
        tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
        GetDistance = CDbl(tmpVal)
        Exit Function
    ErrorHandl:
        GetDistance = -1
    End Function
    source : http://analystcave.com/excel-calcula...een-addresses/
    tout les résultat ne sont cependant pas corrects, certains oui ..., étrange

    qui plus est, je suis arrivé à mon quota d'utilisation des API de Google, la blague

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Oui Google limite le nombre d'utilisations répétées de ses outils et comme en plus il regarde par dessus l'épaule
    mieux vaut éviter même pour une simple recherche, les premiers résultats n'étant pas forcément les plus appropriés !

    Ce serait intéressant de savoir ce qui est long ?   Si c'est la requête, à part tester depuis un autre site …

    Pour 4000 lignes d'un coup, ce n'est pas étonnant et donc tout à fait normal, surtout en VBA !
    Dans ce cas créer alors la requête en VBScript si aptitude afin de pouvoir paralléliser un certain nombre de requêtes
    - c'est comme le fut du canon !   En fait lié à la RAM disponible de l'ordinateur, avec 2 Go libres de 400 à 500 -
    le VBA n'étant qu'un donneur d'ordre, voir l'exemple dans le sous-forum Contribuez du forum Excel

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    et histoire de te simplifier la vie et d'eviter certaines méprise au niveau du regex recupere la requete en XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins="
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SYBASE ASE] Rajouter une contrainte null sur une colonne
    Par Little_Goldo dans le forum Sybase
    Réponses: 1
    Dernier message: 09/02/2005, 10h48
  2. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18
  3. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29
  4. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  5. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo