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 :

Geocoder adresses google


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Geocoder adresses google
    Bonjour !!!

    En ce moment je cherche un moyen simple de géocoder des adresses sur google map. Pour cela j'ai un petit outil bien pratique sur excel pour faire tout ça, le seul hic c'est qu'après une 15 aines d'adresses géocoder, la macro ne suit plus et celle ci indique qu'il y a trop de requête simultanée. pour cela je pense qu'il faudrait que je mette un delai minimum d'exécution de la requête entre chaque requête mais je ne sais pas trop comment m'y prendre. Ou alors c'est un autre problème mais je ne vois pas trop lequel, je m'arrache un peu les cheveux. Je vous appelle à la rescousse je ne sais pas trop ou casé ça et comment, des petits indices ? ou si vous avez d'autre idées je suis preneuse

    Voila une partie du code

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Function googleGeocode( MaPage As String, Address As String, Accuracy As String, CountryNameCode As String, AdministrativeAreaN ame As String, SubAdministrativeAr eaName As String, LocalityName As String, DependentLocalityNa me As String, ThoroughfareName As String, PostalCodeNumber As String, Longitude As String, Latitude As String, Rq As String) As Boolean
     
        Dim MaStr As String
        Dim Repere As String
        Dim BlocAdr As String
        Dim Adresses() As String
        Dim Choix() As String
        Dim fRepere As String
        Dim drepere As String
        Dim coordinates As String
     
        fRepere = "</"
     
        googleGeocode = False
     
        Repere = "<code>"
        If InStr(MaPage, Repere) Then
            MaPage = Right(MaPage, Len(MaPage) - InStr(MaPage, Repere) - Len(Repere) + 1)
            Rq = Left(MaPage, InStr(MaPage, "<") - 1)
            Select Case Rq
                Case 200
                    Rq = "Succès"
                Case 500
                    Rq = "Erreur serveur"
                Case 601
                    Rq = "Erreur de requête"
                Case 602
                    Rq = "Adresse inconnue"
                Case 603
                    Rq = "Adresse confidentielle"
                Case 610
                    Rq = "Clé Google Maps invalide"
                Case 620
                    Rq = "Trop de requetes simultanées"
            End Select
        End If

    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello,
    Je vois déjà deux anomalies :
    Tu passes Rq en paramètre à ta fonction avant de lui changer sa valeur.
    Corrige ça en mettant par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Rqb as string
         Rqb = Rq
    'puis
         Rqb = Left(MaPage, InStr(MaPage, "<") - 1)
         Select case Rqb
    Seconde anomalie : Rq est déclaré "as string" or Case cherche une valeur
    Ça peut peut être fonctionner mais il est plus orthodoxe de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                Case "200"
                    Rq = "Succès"
                Case "500"
                    Rq = "Erreur serveur"
                Case "601"
                    Rq = "Erreur de requête"
                Case "602"
                    Rq = "Adresse inconnue"
    'etc.
    Regarde déjà ça

    Si ça ne va toujours pas, j'ai peut-être une idée
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Tout d'abord merci pour votre réponse rapide.

    2 anomalies oups j'espère que dans le reste du code ça va quand même. j'ai fait les modifications que vous m'avez suggérer, j'ai encore " trop de requêtes simultanées" qui apparait, alors des fois j'en ai qu'une et des fois j'en ai 5 ou 6 à la suite

    A+
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, dans la FAQ de Gog

    If more than 15,000 geocode requests in a 24 hour period are received from a single IP address, or geocode requests are submitted from a single IP address at too fast a rate, the Google Maps API geocoder will begin responding with a status code of 620. This article explains how to time geocode requests from PHP and provides sample code for doing so. If excessive geocoder usage continues, access to the Google Maps API geocoder from this IP address may be blocked permanently

    Ce qui, traduit en français devrait donner à peu près
    Si plus de 15.000 demandes de géocodes dans une période de 24 heures sont reçus à partir d'une seule adresse IP, ou de demandes de géocodes sont soumis à une adresse IP unique à un rythme trop rapide, le système Google Maps API de géocodage commencera de répondre avec un code d'état de 620 .
    If excessive geocoding usage continues, access to the Google Maps API geocoder from this IP address may be blocked permanently.
    Si l'utilisation excessive de géocodage continue, l'accès au géocodage Google Maps API depuis cette adresse IP mai être bloqué de manière permanente.

    A quoi il est ajouté...
    * CB Geocoder can only work with the address data supplied, so if your users are not entering their addresses correctly, or if your fields are not setup properly, CB Geocoder will not be able to geocode it.
    * CB Geocoder ne peut travailler qu'avec les données d'adresses sont fournies, ainsi si vos utilisateurs ne pénètrent pas dans leur adresse correctement, ou si vos champs ne sont pas configuré correctement, CB Geocoder ne sera pas en mesure de le géocodage.
    In these cases, manual entry of the members coordinates may be required.
    Dans ces cas, la saisie manuelle des membres coordonne mai être nécessaire.
    Traduction libre de Google

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors voilà...
    Dans la Sub PasseLignes() et dans les lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Rq = "Echec"
                If googleGeocode(MaPage, Address, Accuracy, CountryNameCode, AdministrativeAreaName, SubAdministrativeAreaName, LocalityName, DependentLocalityName, ThoroughfareName, PostalCodeNumber, Longitude, Latitude, Rq) Then
                    ThisWorkbook.Sheets("Adresses à géocoder").Range("Status").Cells(lin) = Rq
                    If Rq = "Succès" Then
    Rq n'est pas modifié par la fonction googleGeocode puisque déclaré en local dans la sub PasseLignes.
    Si tu la déclares en public, il est inutile de la mettre en paramètre. Ça peut poser des problèmes, je n'ai pas approfondi. Tu regardes déjà.
    A+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, dans la FAQ de Gog

    If more than 15,000 geocode requests in a 24 hour period are received from a single IP address, or geocode requests are submitted from a single IP address at too fast a rate, the Google Maps API geocoder will begin responding with a status code of 620. This article explains how to time geocode requests from PHP and provides sample code for doing so. If excessive geocoder usage continues, access to the Google Maps API geocoder from this IP address may be blocked permanently
    Je suis loin d'être à 15 000 géocodage en 24 heures...


    ouskel'n'or je vais regarder la remarque que tu m'as faite
    Merci
    A+

Discussions similaires

  1. [2.x] Aide pour l'API Geocoding pour Google Maps et Symfony2
    Par Axolotl dans le forum Symfony
    Réponses: 7
    Dernier message: 28/03/2015, 21h25
  2. [WD5.5] syntaxe adresse google maps
    Par lubinfo dans le forum WinDev
    Réponses: 1
    Dernier message: 08/07/2014, 13h52
  3. [Google Maps] Adresse Google Map pour avoir directement itineraire à velo ou à pied
    Par philou8 dans le forum APIs Google
    Réponses: 1
    Dernier message: 11/10/2013, 11h26
  4. Réponses: 6
    Dernier message: 13/03/2008, 11h57

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