Macro pour calculer la distance entre deux villes via google maps

platina

XLDnaute Nouveau
Bonjour !

Je souhaite créer une macro utilisant google maps pour calculer la distance (via la route, et non à vol d'oiseau) entre deux villes ;
Disons que j'ai le nom ou code postal (ce qui rend la chose la plus simple!) de la première ville en A1 et le nom ou code postal de la seconde ville en A2.
Comment faire pour afficher la distance entre les deux en A3 ?

Merci beaucoup !!
 

JNP

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Re :),
Finalement, j'avais pas vu que Google Maps propose de copier le lien en haut à gauche :eek:...
Donc, en bidouillant un peu avec le fichier de Catrice, je suis content de te poster une version compatible avec le Japon ;).
Certes, elle est moins élaborée que le super méga fichier gratuit pour exploitation personnelle, si vous le souhaitez faites moi un don, mais au moins, il te donne ce que tu souhaitais :D... (enfin je pense ;))
Bonne journée :cool:
 

Pièces jointes

  • Itinéraire Catrice modifié Japan.xls
    84 KB · Affichages: 438

jeanpierre

Nous a quitté
Repose en paix
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour le fil, Jean-Noël,

Plus courageux que moi mais il est vrai que je ne suis guère spécialiste en requête.

Je viens de tester et à part deux itinéraires non trouvés (à cause de l'écriture des noms sans doute) cela semble très bien fonctionner.

Bravo et merci.

Bonne journée.

Jean-Pierre
 

JNP

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Re :),
Ben disons que j'ai fait des comparaisons entre les liens obtenus "voiture" ou "transport en commun", et il m'a semblé que ça se tenait dans
Code:
&geocode=&hl=fr&mra=pe&mrcr=0&dirflg=d&sll
mais c'est surtout de l'intuitif, pas complêtement du déductif :p...
Bonne journée :cool:
 

therollerxaxa

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

super boulot, merci beaucoup!
ça marche nickel, il faut juste penser à mettre le nom des préfectures avec, sinon ça marche pas à tout les coups (pour le calcul de quartier à quartier).
Par contre, j'avais oublié de préciser, et je m'en excuse :( mais je souhaitais avoir la distance à vol d'oiseau!
Je n'y connait rien, mais si ça peut vous faire gagner du temps, il y a un outil dans Gmaps pour mesurer la distance à vol d'oiseau dans "mes cartes", "ajouter un contenu", "outil de mesure des distances"

Pour exemple: je cherches la distance, à partir du centre, de tout les quartiers de l'aire urbaine de Tokyo, avec Chiyoda (un quartier de Tokyo) comme centre. Donc, je cherches les distances à vol d'oiseau entre "Chiyoda ward, Tokyo", et "Mobara, Chiba", "Kawasaki, Kanagawa", "Kazo, Saitama", et ainsi de suite...(où Chiba, Kanagawa, Tokyo et Saitama sont les noms des préfectures)
je vous mets la liste des wards en bonus!
merci pour votre aide

xavier
 

Pièces jointes

  • japan list.xls
    32 KB · Affichages: 189

JNP

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Re :),
Par contre, j'avais oublié de préciser, et je m'en excuse :( mais je souhaitais avoir la distance à vol d'oiseau!
Je n'y connait rien, mais si ça peut vous faire gagner du temps, il y a un outil dans Gmaps pour mesurer la distance à vol d'oiseau dans "mes cartes", "ajouter un contenu", "outil de mesure des distances"
Là, pour le vol d'oiseau, je ne pourrai pas grand chose pour toi. J'ai commencé à suivre ton chemin, mais on est plus dans l'appel "bête" d'une page Google pour récupérer un morceau... Notre ami se targue de récupérer le "vol d'oiseau", mais comme son code est bloqué par mot de passe, difficile de pouvoir y jeter un œil... Il dit qu'il est ouvert à toute question, contactes-le...
Bon courage :cool:
 

Manu62

XLDnaute Impliqué
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour à tous,

Avant tout, c'est un très bon sujet.

J'utilise le fichier de catrice car il est le plus simple pour moi à comprendre.

j'ai regardé les autres, très bien, mais un peu plus compliqué...

Dans la partie de ce code, J'aimerais ajouter le temps en h.mm.ss afin de faire des calculs.

Set Result = Sheets("Feuil5").Cells.Find("Itinéraire en voiture")
If Result Is Nothing Then
ActiveCell.Offset(0, 8) = "Itinéraire non trouvé !"
Else
ActiveCell.Offset(0, 8) = Result.Offset(1, 0)
km = Split(Result.Offset(1, 0), " km")
ActiveCell.Offset(0, 9) = CDbl(km(0))

Je voulais mettre : ActiveCell.Offset(0, 10) = "avoir mon temps mais je ne sais pas quoi mettre".....

Suite du code.....

Merci de votre aide.

Manu
 

JNP

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Re :),
En repartant du modifié Japan, voit si ça te convient.
Bonne journée :cool:
 

Pièces jointes

  • Itinéraire Catrice modifié Japan&heure.xls
    89.5 KB · Affichages: 375
Dernière édition:

Manu62

XLDnaute Impliqué
Re : Macro pour calculer la distance entre deux villes via google maps

Re,

Désolé j'ai essayer le ligne a ligne et c'est ok.

sauf que j'ai un deuxieme format et j'ai du mettre le code suivant.
Range("O2").Select
Do While IsEmpty(ActiveCell) = False
Sheets("Feuil5").Cells.Clear
Depart = ActiveCell.Value
Arrivee = ActiveCell.Offset(1, -1).Value
With Sheets("Feuil5").QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" & Depart & "&daddr=" & Arrivee, Destination:=Sheets("Feuil5").Range("A1"))
.Name = "itinéraire"
.BackgroundQuery = True
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With

Set result = Sheets("Feuil5").Cells.Find("Itinéraire en voiture")
If result Is Nothing Then
ActiveCell.Offset(1, 5) = "Itinéraire non trouvé !"
Else
ActiveCell.Offset(1, 5) = result.Offset(1, 0)
km = Split(result.Offset(1, 0), " km")
ActiveCell.Offset(1, 6) = CDbl(km(0))
temps = Split(result.Offset(1, 0), " ")
If UBound(temps) = 7 Then
ActiveCell.Offset(1, 7) = temps(4) & ":" & temps(6)
Else
ActiveCell.Offset(1, 7) = "0:" & temps(4)
End If
End If
ActiveCell.Offset(1, 0).Select
Loop

Et là il beug car la ville de départ = la ville d'arrivé,

j'ai le message suivant erreur exécution.

Peux t'on contourné cela. et mettre 00:00

Merci bcp

Manu
 

JNP

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Re :),
Techniquement, le trajet ne peux être nul, quel est l'intérêt d'un tel calcul :confused: ???
Si c'est un déplacement intramuros, tu dois saisir dans les cellules pour le départ ainsi que pour l'arrivée "rue, ville", ainsi tu auras une durée non nulle.
Mais bon, si vraiment tu veux une action nulle
Code:
Sub Test()
For Each x In Sheets("Feuil1").Range("A2:" & Sheets("Feuil1").Range("A65536").End(xlUp).Address)
    Sheets("Feuil2").Cells.Clear
    Depart = x.Value
    Arrivee = x.Offset(0, 1).Value
    With Sheets("Feuil2").QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" & Depart & "&daddr=" & Arrivee _
        & "&geocode=&hl=fr&mra=pe&mrcr=0&dirflg=d&sll", Destination:=Sheets("Feuil2").Range("A1"))
        .Name = "itinéraire"
        .BackgroundQuery = True
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .Refresh BackgroundQuery:=False
    End With
 
    Set result = Sheets("Feuil2").Cells.Find("Itinéraire en voiture")
    If result Is Nothing Then
        x.Offset(0, 2) = "Itinéraire non trouvé !"
    Else
        x.Offset(0, 2) = result.Offset(1, 0)
        km = Split(Replace(result.Offset(1, 0), ",", "."), " km")
        x.Offset(0, 3) = km(0)
        temps = Split(result.Offset(1, 0), " ")
        If UBound(temps) = 7 Then
            x.Offset(0, 4) = temps(4) & ":" & temps(6)
        ElseIf UBound(temps) = 5 Then
            x.Offset(0, 4) = "0:" & temps(4)
        Else
            x.Offset(0, 4) = "0:0"
        End If
    End If
Next
End Sub
Bon courage :cool:
 

Manu62

XLDnaute Impliqué
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour,

Je t'en remercie beaucoup.

Pour info, dans mon fichier, j'ai des positions "de déplacement de camion" entre 2 ou 3 allées et dans la même ville car c'est au même endroit.
ensuite il part dans un autre ville.
ici dans ce le cas de ville A pour ville A j'ai à 99 % 100 mètres et cela je ne m'en occupe pas. cela me bloqué pour les calculs suivant.

voilà

Encore merci

Super fil.

Manu
 

juan64

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Par contre, j'avais oublié de préciser, et je m'en excuse :( mais je souhaitais avoir la distance à vol d'oiseau!

@therollerxaxa : suite à ton MP, voici qq éléments de réponse.

Je viens de tester avec le fichier de calcul d'itinéraire (dispo Ce lien n'existe plus), le géocodage fonctionne, on peut donc calculer la distance à vol d'oiseau pour le Japon (exprimée en km)
Il faut utiliser le maximum d'infos dans l'adresse pour optimiser la précision (n° rue, ville, pays...)

Pour info, voici le mode de fonctionnement utilisé :
- requête de géocodage s'appuyant sur l'API Google (cf http://code.google.com)
- calcul de distance par formule Arctangente, radians...

++
Juan64
:):):)
Ce lien n'existe plus
 

stid59

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour à tous,
Ce fichier est superbe et très facile d'utilisation :)
Est ce qu'il est possible de faire ce genre de fichier sur les pages jaunes ?
Par exemple, dans une feuille Excel, l'utilisateur saisit "hôtel" dans une cellule et "59000" dans une autre. En cliquant sur un bouton est-il possible d'afficher les 5 premiers hôtels de Lille ?

J'ai déjà travaillé en VB mais jamais lié avec le Web donc je patine un peu :s j'ai aussi pensé aux requêtes Web mais là encore je n'ai jamais travaillé avec Excel et le Web en même temps.
 

Discussions similaires

Statistiques des forums

Discussions
315 147
Messages
2 116 771
Membres
112 857
dernier inscrit
sanogo