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 !!
 

platina

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

Catrice ! C'est super ça marche !!!

Bravo, tu m'as gagné des heures de google maps ! En fait je dois faire cela sur 7000 villes !
Donc comment adapter ton fichier pour que si j'ai tous mes départs dans la colonne A, et toutes mes arrivées dans la colonne B, obtenir toutes les distances en km dans la colonne C sans cliquer 7000 fois sur la touche grise ?

Merci beaucoup !
 
Dernière édition:

ledzepfred

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

catrice, platina, bonjour,

j'ai adapté l'excellent code de catrice pour l'intégrer dans une boucle en références relatives.

Il est préférable d'utiliser les codes postaux pour les départs et arrivées plutôt que les noms des villes (tu auras plus de résultats corrects

bon courage
 

Fichiers joints

Catrice

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

Bonjour à tous,

Ci-joint la meme chose mais avec un For Each (question d'habitude ;))
 

Fichiers joints

Dernière édition:

Gruick

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

Bonjour les voyageurs,

Superbe sujet, mais voilà le hic (chez moi) :
Code:
 km = Split(Result.Offset(1, 0), " km")
    ActiveCell.Offset(0, 3) = km(0)
pas de fonction split sur ce foutu excel 2004 pour Mac, et pas plus sur mon XL2000 pour PC.
C'est donc la fonction sniff....(ça Plant dirait Robert !)

Un ami XLDnaute m'avait renseigné la dessus, mais impossible de retrouver ses explications, qui devaient être à l'intérieur d'un autre sujet.

Donc, si une bonne âme pouvait m'expliquer ce que la fonction split fait...
et par quoi peut-on la remplacer. Je continue néanmoins à fouiner dans les messages.

Merci d'avance, et il semblerait que Led Zep ça les démange un peu, même si ils disent le contraire.

Gruick, qui écoute Physical Graffiti en attendant...
 

Catrice

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

Bonjour Gruick,

2 solutions dans le fichier joint.

La fonction Split créée un tableau à partir d'une chaine en utilisant le séparateur de son choix.
Exemple : chaine => 10 km 20 km 30 km
Si on fait :
Sub Test1()
Chaine = "10 km 20 km 30 km "
Var = Split(Chaine, " km ")
MsgBox Var(0) 'Donne 10
MsgBox Var(1) 'Donne 20
MsgBox Var(2) 'Donne 30
End Sub
 

Fichiers joints

Dernière édition:

ledzepfred

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

re bonjour à tous,

D'abord mille excuses pour ce post qui n'apporte rien
gruick : excellent le jeu de mot "ça plant dirait robert", pour ce qui est des démangeaisons on verra bien s'ils vont finir par se gratter. enfin excellent choix en ce qui concerne physical graffiti (c'est pas ce qui va te permettre de remplacer split par autre chose mais bon).

Histoire que ce message ait un lien avec excel : j'en profite pour dire à Catrice que je suis en général un fan de ces codes.

a+
 

Gruick

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

Grand Merci Catrice, et encore plus pour la macro.
(un peu tardif, mais coups de fils intempestifs, puis repas)

J'ai deux instructions dont le Mac n'a pas voulu,
Code:
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
que j'ai apostrophées... ça marche !

J'ai cherché "km" au lieu de "Itinéraire en voiture"... ça marche !
Ma variable result est donc le contenu de la cellule où se trouve le mot "km"

Il n'y a plus qu'à mettre en forme tout ça, je pense pouvoir y arriver.

Je vais donc tout de suite noter ce sujet avec 5 étoiles.

Précision utile : Plus fiable avec les codes postaux, car il y a des communes avec des traits d'union (ex : Rosières-aux-Salines en 54).

Merci encore et bravo, bravissimo !!!!

Ca marche aussi pour l'étranger, j'ai essayé Seville, Berlin, Palerme, Oslo, Riga, Athènes, Bucarest, et Split, rien que pour emm... Excel !

Gruick
 
Dernière édition:

Catrice

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

Hello Gruick,

Je fais la recherche sur "Itinéraire en voiture" plutot que sur "km" car en cas d'erreur j'ai remarqué que "Itinéraire en voiture" n'apparaissait pas dans la requete.
En revanche, en cas d'erreur "km" apparait => source d'erreur lors d'une mauvaise saisie d'une ville :(

De plus Londres Paris, par exemple, donne des miles ...
 
Dernière édition:

platina

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

Merci à tous !

Je vois que vous étes tous à la page, autant que notre ami Jimmy (oui bon je tente la blague!)...

Dernière question: Comment maintenant faire pour afficher toutes les destinations d'arrivée de mon fichier excel (donc toujours la colonne B) sur une carte de France ?

Encore merci
 
Dernière édition:

ledzepfred

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

Bonsoir à tous,
ben histoire d'en remettre une couche il y aura toujours une bonham :D:D
pour te venir en aide sur ce forum. Pour John Paul Jones, j'ai pas trouvé mais les hypothèses d'en trouvé sont basse :rolleyes:

blague à part ta carte est une image placée dans le fichier?
Beau défi mais perso ça complique, en plus avec 7000 références kilométriques ce serait illisible (sauf si on a une grande carte)

il y aurait bien la possibilité de créer par code autant de zone de texte qu'il y a de destinations, superposées sur l'image mais pour placer la zone de texte il faut que la position des destinations soit determinée sur la carte par des coordonnées (1 abcisse et une ordonnée) or on a ni l'une ni l'autre. Maintenant si tu trouves un site qui récupère la longitude et la latitude d'une destination, on peut grâce à Catrice extraire cette info dans excel et la convertir en position de la zone de texte (je sais pas si je suis clair là!!!)

a+
 
Dernière édition:

platina

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

Merci ledzepfred !
J'ai trouvé ce site internet, qui donne les coordonnées à partir de l'adresse/code postal.
En revanche quand on utilise le code postal, il faut toujours retaper "france" à côté sinon il se trompe ; je ne sais pas s'il y a moyen d'automatiser cela dans la macro ?

Merci à tous !
 

Gruick

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

Bonjour aux voyageurs

@ledzepfred
Tu n'as peut-être pas vu, mais je l'avais déjà casé le batteur fou dans mon premier message.
Je vais bientôt faire les commissions pour manger, je ne peux le jeune !!!

@Catrice
Tu as raison pour les miles, aussi j'ai fait un test, voici ce que devient la fin du code (ah ! les Anglishes... mais quel bonheur)

Code:
Set Result = Sheets("Feuil2").Cells.Find("voiture")
  If Result Is Nothing Then
    X.Offset(0, 2) = "Itinéraire non trouvé !"
  Else
    X.Offset(0, 2) = Result.Offset(0, 1)
    km = InStr(Result.Offset(0, 1).Value, "k")
    If km <> 0 Then
      X.Offset(0, 3).FormulaR1C1 = "=LEFT(RC[-1],FIND("" km"",RC[-1]))*1" '
      X.Offset(0, 4).FormulaR1C1 = "=RIGHT(RC[-2],LEN(RC[-2])-FIND(""km"",RC[-2])-4)"
    Else
      X.Offset(0, 3).FormulaR1C1 = "=LEFT(RC[-1],FIND("" mi"",RC[-1]))*1.609"
      X.Offset(0, 4).FormulaR1C1 = "=RIGHT(RC[-2],LEN(RC[-2])-FIND(""mi"",RC[-2])-4)"
    End If
  End If
@Platina
France
Site extraordinaire qui regorge de base de données. (à transformer un peu des fois, pour rendre excelables)

Mais c'est un travail de romain
J'en ai fait un essai graphique partiel sur les altitudes.
Mais j'ai aussi pu y caser les 36610 communes de France métropolitaine, et donner le ou les noms de commune à chaque cellule. Attention 12 Mo !!!
Pour ce, j'ai mis en première ligne les longitudes (de -5,1 à +9,5 degrés) et en première colonne, les latitudes (de 51,1 à 41,35 degrés).
Une tite macro selon ce que l'on veut, et le tour est joué.
Magré tout, il y aura des trous et des bousculades, car certaines communes comme Chamonix, ou Nîmes, ou Fontainebleau sont très étendues, d'autres rikiki.

Bon courage

Gruick
 

Catrice

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

Bonjour,

Ci-joint un fichier qui place les villes de destination sur la carte de france.
C'est perfectible mais ça fonctionne.
L'affichage des villes est basé sur des formats nombre. Il faut que je vois pour les effacer au fur et à mesure car sinon le classeur va exploser ...

Mais on ne pourra pas mettre 7000 villes ...
A suivre ...

Il est sur Cjoint car trop gros à cause de la carte ....
http://cjoint.com/?lgoIXxJ4LN

J'ai laissé 3 villes de référence pour l'étalonage.
C'est un peu bricolé ;)
Pour bien faire il faudrait les references GPS des extremités de la carte afin de regler les echelles X et Y au mieux
 
Dernière édition:

hawkmoon

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

Bonjour j'ai essayé vos fichiers excels (itinéraires, itinéraire(1) et itinéraire(2) ), cela marchait bien jusqu'à ce que j'essaye pour 90 itinéraires, il m'a calculé les 51 premiers puis j'ai eu
erreur d'exécution '1004'
Fichier inaccessible essayez l'une des opérations suivantes :
vérifiez que le dossier spécifié existe
vérifiez que le dossier ne se trouve pas en lecture seule
vérifiez que le nom du fichier ne comporte pas les caracètres suivants : <>?[] ni *

puis j'ai le choix entre fin débogage et aide

le débogage bloque à la ligne .Refresh BackgroundQuery:=False

et depuis je ne peux plus faire le moindre calcul d'itinéraire sans que cette erreur n'apparaisse.

cela est-il du à une limitation de google du nombre d'itinéraires qu'une adresse IP peut demander?
Si je fais une recherche d'itinéraire à partir de firefox directement sur le site de firefox, cela marche...
si quelqu'un a une réponse à ce problème ça m'aiderait beaucoup!
j'ai vraiment beaucoup de chance, j'ai cherché aujourd'hui comment calculer la distance route entre deux villes et je tombe sur ce topic qui a été lancé hier!

Merci d'avance!
 
Dernière édition:

JCGL

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

Bonjour à tous,

Je viens d'essayer sur 150 Itinéraires
Pas de problème

Aurais-tu eu une défaillance de ta liaison Web ?

A+
 

hawkmoon

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

au fait, j'ai adapté la macro pour via michelin mais je n'arrive pas à récupérer la partie de la page des résultats qui indique l'itinéraire
je n'ai pas réussi à l'adapter à mappy...
 

Discussions similaires


Haut Bas