Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Macro pour calculer la distance entre deux villes via google maps
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 ?
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.
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 ...
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
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!
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...
Re : Macro pour calculer la distance entre deux villes via google maps
Bonsoir à tous,
ben là je dis chapeau!
J'avais bien pensé à un graphique nuage de point mais je ne voyais pas comment le superposer sur une carte (d'ailleurs j'ai pas compris comment tu as fait catrice!! mais comment-est ce que cela fonctionne-t-il?) d'où mon idée saugrenue de crée des zones de champ texte.
j'ai remarqué que dans le fichier il y avait des plages nommées coordonnes_ville, à quoi servent-elles?
Gruick : désolé j'avais pas capté ton allusion au batteur fou!
Re : Macro pour calculer la distance entre deux villes via google maps
Bonsoir,
@ skun, oui on peut surement l'adapter aux DOM.
Il faut une carte de la Reunion (facile)
Une base qui donne les coordonnées GPS des villes que tu souhaites gérer (moins facile)
@ ledzepfred, pour la carte, il suffit d'aller dans Motif/Motif et textures/Images et d'inserer.
Les plages nommées ne servent qu'à rendre le graphique dynamique. Il met autant de points (villes) qu'il y a de lignes dans DataCarte.
Pour afficher les étiquettes (c'est une astuce vue dans un fil de CB60 si je ne me trompe pas), on applique un format/nombre avec le nom de la ville et on demande à afficher les Labels X sur le graphique.
Le pb (à tester) c'est que ça va doper le fichier en formats nombres. Il faut que je vois pour les effacer au fur et à mesure.
Autre petit point, il faut rajouter des "-" sur les noms de villes composés (d'ou l'obligation de les saisir avec des espaces) http://www.galichon.com/codesgeo/ les transforme avec des "-".
Enfin, je teste le separateur decimal car http://www.galichon.com/codesgeo/ recupere les coordonnees avec des ".".
C'est un peu usine à gaz car le replace classique bug (sur XL 2002 en tous les cas) avec les nb du type 60.633333. Trop de decimales = suppression du . au lieu du remplacement
Re : Macro pour calculer la distance entre deux villes via google maps
Bonjour,
Je me suis amusé à rendre Macintoshable tout ça, sans le Split, et autres instructions genre CDbl qui existe mais que je ne connais pas. J'ai encore quelques surprises quand je cherche Paris, il me trouve Paris évidemment, mais me recopie Cormeilles-en-Parisis, le premier de la liste. Pas bien grave. Je vais zieuter ça.
Même aventure sur XL2004 Mac pour les décimales nombreuses, mais ça marche si on prend les "valeurs" une par une, et qu'on fait un CNUM. Ca donne un code archaïque, pas trouvé mieux, mais le temps me manque.
Code:
For Each Y In ZoneReplace
Y.Offset(0, 2).FormulaR1C1 = "=REPLACE(RC[-2],SEARCH(""."",RC[-2]),1,"","")"
Application.CutCopyMode = False
Y.Offset(0, 2).Copy
Y.Offset(0, 2).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Y.FormulaR1C1 = "=VALUE(RC[2])"
Y.Copy
Y.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Y.Offset(0, 2).ClearContents
Next
qui remplacera la boucle initiale chez moi.
En revanche, je vais vous donner le truc pour éviter de créer des formats de nombres pour faire apparaître les noms des villes sur la carte. (Parce-que ça peut être encombrant à force, et il faut nettoyer, sinon ça reste).
Voici donc le bout de macro
Code:
NbValeurs = Sheets("DataCarte").Range("A65536").End(xlUp).Row - 1
Sheets("Distances").ChartObjects("Graphique 4").Activate
Dim Etiq()
For i = 1 To NbValeurs
ReDim Preserve Etiq(i)
Etiq(i) = Sheets("DataCarte").Cells(i + 1, 1)
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Characters.Text = Etiq(i)
Next i
Ouf, j'ai pu servir à quelque chose...
Encore bravo Catrice, je suis toujours aussi admiratif.
Re : Macro pour calculer la distance entre deux villes via google maps
Hello Gruick,
Effectivement, c'est beaucoup mieux comme ça.
J'étais resté sur la solution des formats qui ne necessitait pas de macro (dans l'exemple d'origine) mais là étant donné qu'on a du code pourquoi s'en priver ...
Merci
Pour les recherche Paris, tu n'a pas un pb XlWhole et xlPart ?
Un vrai galere l'histoire du point et de la virgule ...
Re : Macro pour calculer la distance entre deux villes via google maps
Bonjour,
Alors là les amis, vous avez trouvé quelque chose de vraiment intéressant!!!
J'aimerai bien appliquer cela pour les temps de conduite des chauffeurs poids lourds! Estimer combien de temps il faut pour un camion pour effectuer ses livraisons.
On a simplement besoin du nombre de km à parcourir entre deux villes, la vitesse moyenne du camion en km par heure et d'insérer dans tout ça les temps de pause obligatoires, les temps moyens de déchargement,…
Ainsi je pourrai simuler par exemple un trajet :
Rennes >> Nantes >> Bordeaux >> Agen
Vous pensez que ceci peut être possible ???
Si oui, dites le moi et je vous envoie tous les éléments,
Re : Macro pour calculer la distance entre deux villes via google maps
Re,
Je viens de me rendre compte que des fois, XL me transforme les données galichonesques en nombre sans que je lui demande d'où test supplémentaire.
Code:
If IsNumeric(Y) Then GoTo re
, avec le re: juste avant le Y.Offset(0, 2).ClearContents.
Pour les traits d'union, j'ai fait l'inverse de toi, une fois les coordonnées acquises, et je compare avec le nom de la ville de la feuille "Distances", mais avec une boucle.
J'aurai pu faire avec un .find,
Code:
ville = Sheets("Req2").Cells.Find(What:=X, lookat:=xlWhole)
mais je ne sais pas quoi faire une fois repérée, je ne peux que faire un msgbox pour vérifier, mais ni copier, ni sélectionner.
C'est ça qui m'enquiquine avec le .find, rapide mais je sais à peine m'en servir.
Pour la carte, vu que les méridiens ne sont pas parallèles, l'écart est plus étroit au nord qu'au sud, et ça me met donc Saint Jean de Luz un peu à l'intérieur des terres. Comment anamorphoser si possible légèrement la carte ?
Voilà Catrice, c'est proche du parfait, surtout grâce à toi.
Re : Macro pour calculer la distance entre deux villes via google maps
julien974,
ci-joint une utilisation directe du fichier qui permet de faire un itineraire.
Tu peux ensuite greffer tous les calculs que tu souhaites.
Par etape, duree total, temps moyen etc ...
Gruick,
Utilise plutot Set ville = Sheets("Req2").Cells.Find(What:=X, lookat:=xlWhole)
Ville devient un objet sur lequel tu peux faire un .Offset, un .Value, un .Address un .Select etc ...
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.