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

ledzepfred

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

Merci Gruick et bonjour à tous les intervenants et le forum (ils sont nombreux à regarder!),

effectivement j'avais zappé ton allusion à JPJ.

Ci-joint version v7 de itinéraires.xls intégrant les deux macros tueuses de fichiers temporaires internet (il vous suffit de modifier le dossier dans lequel se cache les fichiers maps.htm et ville.htm

Après un test réalisé sur mon poste et ce à grande échelle puisque j'ai recherché alternativement 400 itinéraires sur google maps et la même chose pour la carte (je vous raconte pas la tête qu'elle avait) sans aucun plantage, sans le code tueur la première macro s'effectuait sans problème mais la seconde buggait aux alentours de la 50ème recherche.

Reste à savoir si cela fonctionne sur Mac.

a+

Cijoint.fr - Service gratuit de dépôt de fichiers

edit 15H47 : à j'oubliais il y a une boucle autour de Kill F dans mon code : normal puisque les fichiers temp sont présents dans plusieurs sous-répertoires de Content.IE5
 
Dernière édition:

dirmon

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

Bonjour,

@lezepfred
Merci pour ta macro

@Roland M
Merci pour ton fichier je fais m'en servir pour une appli.

Si vous avez des idées pour les temps de tajets en Camions,çà m'interesse, car pour l'instant j'essaie d'adapter le code à ma façon sans succés.

A bientôt
 

Catrice

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

Bonjour Dirmon,

Je n'ai pas pu me pencher trop sur ce fichier cette semaine. Je vais essayer de la faire évoluer plus tard.

Pour ce qui concerne ta question (les camions) il faudrait utiliser un site qui gere les camions et <<Edit, rectification : pour lequel il est possible de passer les parametres dans l'adresse>>. En effet, dans ma macro je construis la ligne d'adresse avec les parametres (de villes Depart/Arrivee) pour faire la requete sur Google Maps.
Donc pour le moment stand by...

En attendant, j'avais pensé à l'idée suivante. Tu veux en fait pondérer le résultat horaire car il s'agit de camions. Peut etre sur un site qui fait voitures et camions, tu pourrais faire quelques tests de trajets pour chaque type de véhicules et en tirer un coef de pondération qu'il te suffirait d'appliquer aux résultats trouvés dans Google Maps ...
Sachant qu'il y a peut etre de toutes façons des marges d'erreurs liés aux itinéraires autorisés pour les poids lourds par exemple. Je ne sais pas si les sites d'itinéraires en tiennent compte. Le Coef pourrait etre acceptable...
Ou tout du moins plus précis que celui des voitures...
 
Dernière édition:

dirmon

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

Bonjour,

Merci Catrice pour tes réponses.

Effectivement,le coefficient de pondération est une solution que j'utiliserai dans le cas où je n'en trouve pas d'autres.

Excuses-moi je vais passer pour une bille mais comment peut-on reconnaitre qu'un site est en php au lieu de HTML.

Merci
 

Catrice

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

Re Dirmon,

Petite réctification, j'ai dit php parce que je connais un peu le php et qu'en php on peut passer la requete dans le lien hypertexte.
Mais en fait je ne suis pas sûr que google maps soit du php.
Donc plutot que dire php, je dirais plutot un site qui passe ses parametres dans le lien hypertexte.
Je viens de regarder mappy, ils passent également les informations dans le lien mais c'est bourré de parametres à décoder ...
En regardant sur Michelin aussi on peut passer des parametres (plus facilement) mais il affiche une boite de dialogue (à gerer si on passe par Excel) quand il y a plusieurs villes qui correspondent au code postal.
J'ai trouvé celui-ci : Association des sociétés françaises d’autoroute*› ASFA qui a l'air simple mais pour récuperer dans Excel faut voir ... à suivre ...
 
Dernière édition:

julien974

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

Bonjour le forum, bonjour à tous.

Je suis vraiment surpris de voir l'évolution de ce fil, c'est vraiment formidable!

Dirmon, nous avons en effet les mêmes demandes. Gérer des flottes de camion a travers la France...

Je pense que le problème est assez simple dans la mesure ou nous avons le nombre de KM entre chaque ville. Il suffit de trouver la vitesse moyenne des camions en Km/h et le tour est joué. Il est vrai que cela reste approximatif, mais sur de grande distance, nettement moins déjà! Ensuite il siffira d'y ajouter les temps de repos, déchargement,ect... et nous aurons ce que nous cherchons.

Je vais essayer qq chose de mon coté avec mon niveau de débutant et je te ferai signe qd j'aurai qq chose qui tient la route. Fais de même de ton coté. Au fait quel est ton niveau VBA?

A très bientot,

Juli3n974
 

dirmon

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

Bonjour à tous,

Pour repondre à ta question julien 974 je suis un novice en macro c'est pourquoi je ne peux pas proposer d'évolution sur le fichier.

Par contre je suis très attentif aux codes proposés et j'essaye aussi de mon coté.

A Bientôt
 

Gruick

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

Bonjour,

Je propose une version du programme qui propose de mettre le numéro de département à côté de la ville, si nécessaire. (donc pas obligatoire).
Une seule colonne pour les villes.
Cela résoud le problème des homonymies.
En plus, avec la carte dont je n'arrête pas de louer la beauté et l'exactitude.
Un seul problème avec les apostrophes (Les Sables d Olonne)

http://www.cijoint.fr/cjlink.php?file=cj200811/cijIOmN0yo.xls

@Catrice,
J'ai réalisé le programme d'optimisation du parcours avec distancier, je voulais t'en reserver la primauté, mais impossible de t'envoyer des messages privés. :( Tu peux m'envoyer ta bal si tu veux par message privé.
Pour savoir ce que tu en penses, s'il y a des trucs à revoir... avant de le rendre public.

A plus.
Gruick
 

Roland_M

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

bonjour à tous

Gruick, j'ai chargé le classeur et c'est vrai que c'est assez surprenant !

mais il y a une erreur dans la feuille "Distances"
la colonne B pour les départements doit être au format Texte !!!!!

sinon Google Maps ne détecte pas toujours le département avec un 0 en 1er

exemple essai avec
Biot 6 IL NE TROUVE PAS !

cellule au format texte et entre 06
Biot 06 LA, IL TROUVE BIEN !

cordialement !
 

jeanpierre

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

Bonjour à tous, Gruick, Roland,

Très belle réalisation en ce qui concerne la carte.

Néanmoins, un autre problème : j'ai testé Nice et Le Mans, s'il les trouve bien en Distance, pour la carte cela ne marche pas, (vais même pas pouvoir rentrer chez-moi...) le dessin ne se fait pas.

Dans la feuille Reg2, pour Nice, il y a 4 communes dans 4 départements, respectivement "Denicé, Nice, Nicey et Nicey-sur-Aire" et pour Le Mans, 4 communes également mais dans le même département...

Alors que pour Saint-Raphaël, il y en a 2 dans 2 départements et pour Laval plus d'une trentaine.....

Y'a comme un bug mon cher Gruick......

A plus et bon après-midi.

Jean-Pierre
 

Catrice

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

Bonjour Gruick,

Les étapes en colonne c'est mieux. Ta carte est vraiment super belle.
Il me met les étiquettes un peu bizarrement...

Pour m'envoyer le fichier, il faut que je reactive un truc dans mes parametres je crois ...

A+
 

Gruick

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

Merci les amis,

Pour m'avoir signalé des cas particuliers.

@Roland_M
Mettre le département si nécessaire, pour Nice pas besoin, pour Biot, si, euh six :p. J'ai ajouté des instructions de formatage pour que ça tourne bien et aussi pour la carte.
Donc, dans la macro Distances uniquement :
Code:
Sub Distances()
Nettoyage 'Efface les data Colonnes C à E
'Boucle sur les Depart/Arrivée pour faire la requete dans Google Maps
For Each X In Sheets("Distances").Range("A2:" & Sheets("Distances").Range("A65536").End(xlUp)(0).Address)
[COLOR=magenta]Range("B:B").NumberFormat = "@"[/COLOR]
X.Select 'pas nécessaire
    [COLOR=magenta]If X.Offset(0, 1) And X.Offset(0, 1) < 10 Then X.Offset(0, 1) = "0" & X.Offset(0, 1).Value[/COLOR]
[COLOR=magenta]    If X.Offset(1, 1) And X.Offset(1, 1) < 10 Then X.Offset(1, 1) = "0" & X.Offset(1, 1).Value[/COLOR]
    Depart = X.Value & IIf(X.Offset(0, 1), " " & X.Offset(0, 1).Value, "")
    Arrivee = X.Offset(1, 0).Value & IIf(X.Offset(1, 1), " " & X.Offset(1, 1).Value, "")
......
et avant la fin :
Code:
.......
[COLOR=magenta]If X.Offset(0, 1) Then X.Offset(0, 1) = X.Offset(0, 1) * 1[/COLOR]
[COLOR=magenta]If X.Offset(1, 1) Then X.Offset(1, 1) = X.Offset(1, 1) * 1[/COLOR]
Next
Formules 'Ajoute les formules de totaux
End Sub
J'en ai bavé mais ça marche mieux maintenant.
En mauve ce que j'ai ajouté. C'est assez bizarre, mais c'est une ruse.

@jeanpierre.... euh ! t'en a d'autres comme ça ?
Ma parole, toutes les villes s'appellent Le Mans dans la Sarthe. Je connais bien, superbe cathédrale entre autres.
Ca trouvera la distance même sans mettre le département, mais ça ne la dessinera pas. Evidemment, vu leur nombre dans le même département. Là il faut peut-être ruser aussi avec le .Find, qui n'a jamais été mon grand copain, dans la macro carte. J'avoue coincer. Au secours Catrice...:confused:

@Catrice,
Merci pour tes compliments, mais 99.99 % du mérite te revient.
Je t'avais bien dit que ma carte était belle, et juste.;)
Quel est ton problème avec les étiquettes ?
Mon fichier avec distancier fait 747 Ko, vers 250 zippé, et il devra être revu en fonction de ce que je viens d'ajouter. Donc, si tu veux bien me confier ton adresse internet par message privé.

On va y arriver !

A bientôt,
Gruick
 
Dernière édition:

jeanpierre

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

Re Gruick,

Non c'est des noms du genre Truc-les Le Mans.... ou Machin.

Mais alors, pourquoi pour Laval il y en a plus de 30 et que cela fonctionne, hein dis pourquoi ?

A te lire et bonne soirée.

Jean-Pierre
 

Roland_M

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

rebonsoir à tous

il semble normal que l'on ai pas toutes les communes sur galichon !?

sur le net on trouve plusieurs sites avec des listes plus ou moins complètes !

galichon possède 35249 communes
j'ai trouvé un fichier 38050 communes

j'ai créé des routines qui m'ont tout chargé dans des classeurs
avec toutes les communes par départements et un récapitulatif.

un autre que j'ai fais, pour le plaisir, qui lui me calcul un trajet(sans carte)
avec dans l'userform des listes qui classent selon un code ou un nom saisi:
plusieurs villes de même noms avec codes postaux différents
plusieurs codes postaux identiques avec noms de villes différentes
ça peut être interressant pout info !?

ci-joint pour ceux que ça intéresse !?

Cijoint.fr - Service gratuit de dépôt de fichiers

Cijoint.fr - Service gratuit de dépôt de fichiers
 

Gruick

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

Bonjour,

La nuit porte conseil comme dit le vieil adage que je salue au passage;)

@Roland
Galichon ne propose que la France Métropolitaine du moins pour les coordonnées géographiques, et ton fichier y ajoute les Dom-Tom.

@Jeanpierre,
Tu vas pouvoir rentrer chez toi, le bug vient des tirets que met Galichon. J'ai choisi la solution inverse de Catrice, celle de les retirer. Ainsi, les noms ressembleront à ceux de la feuille "Distances". Je me suis rendu compte que la feuille "Req1" ne s'effaçait pas automatiquement. J'ai donc rajouté les instructions
Code:
Sheets("Req1").Cells.Clear
Sheets("Req2").Cells.Clear
dans la macro effacement.

Voici les nouveautés dans la macro "Carte" :
juste avant la boucle de recherche, ajouter
Code:
Sheets("Distances").Range("B:B").NumberFormat = "General"
Juste après le end with
Code:
For Each Commune In Range(Sheets("Req2").Cells(2, 1), Sheets("Req2").Cells(2 ^ 16, 1).End(xlUp))
Commune.Replace what:="-", replacement:=" ", lookat:=xlPart
Next Commune
Set Ville = Sheets("Req2").Cells.Find(X, lookat:=xlWhole)
et supprimer cette ligne après le If X.Offset(0, 1) Then
Code:
X.Replace what:=" ", replacement:="-", lookat:=xlPart 'eh oui, encore

Maintenant, on n'est pas à l'abri d'un cas particulier...

A plus, j'espère que ça marche mieux.

Gruick
 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi