Matrice de distances - Google Maps

NezQuiCoule

XLDnaute Occasionnel
Bonjour à tous !

Comme conseillé par eriiiic et d'autres, et ils n'ont pas tort, je créé mon propre topic pour partager avec vous le fichier que j'ai élaboré.
Le principe est simple : lorsqu'on élabore un distancier "à la main", on doit saisir sur un site de cartographie en ligne (Google Maps, ViaMichelin, ...) la ville de départ et la destination, puis récupérer la distance, chose longue et fastidieuse lorsqu'on le fait avec beaucoup de localisations.

Le but du fichier est donc de faciliter cette tâche, à l'aide de 2 feuilles :
-La première, "Départ-Arrivée" permet tout simplement de calculer la distance entre la ville de départ et la destination saisie. On peut créer une liste puis lancer le calcul avec le bouton "Calculer". Cette fonction permet de créer des listes rapidement sans trop se prendre la tête.
-La seconde, qui sera certainement plus intéressante, appelé "Matrice" correspond à un distancier. On saisie dans la colonne A le nom des villes qui nous intéresse, on vide le tableau en supprimant les distances déjà présentes si c'est le cas, puis on lance en cliquant sur "Créer Distancier". Une barre de progression s'affiche, il ne reste plus qu'à patienter si cela fonctionne bien. À noter que le trajet "Départ-Arrivée" et "Arrivée-Départ" est considéré ici comme identique, ce qui n'est pas toujours vrai.. Mais pour un gain de temps je ne pense pas qu'il soit nécessaire de faire 2 fois plus de requêtes.

Vous pouvez spécifier pour la ville son nom, le code postal, les coordonnées GPS, le pays, région... Plus vous êtes précis, moins Google Maps fera d'erreur, car ici pas de suggestion, c'est à vous d'être précis. ;)

Le principe est très simple, je n'ai rien inventé.. Si vous utilisez ce lien :

https://maps.google.fr/maps?t=m&saddr=ville_départ&daddr=ville_arrivée&output=classic&dg=ntvb

En remplaçant ville_départ et ville_arrivée par vos destinations, vous tombez directement sur l'itinéraire.

Il faut donc savoir qu'utiliser Google Maps de cette façon n'est pas vraiment conseillé puisque le fichier repose sur le fait que la structure de l'API Google Maps n'évolue pas, ce qui n'est pas le cas pour un géant comme Google. Donc tôt ou tard il y a fort à parier que leur site évolue et que ce fichier ne fonctionne plus, profitons-en donc. :)

Sans plus tarder voilà le fichier, avec la petite modification apportée par eriiiic pour l'affichage correct des valeurs, que je remercie chaleureusement.
Bien entendu je réponds aux questions dans la mesure du possible et je suis ouvert à toutes critiques, bonnes ou mauvaises, on est là pour apprendre et s'entraider après tout :cool:

************* EDIT **************

Fichier mis à jour en v3 :

- Amélioration globale du code (vitesse + stabilité)
- Possibilité de calculer ou non un trajet "Aller" et "Retour" de façon indépendante (Merci Anette ;) ) sous forme de case à cocher (dans Matrice Distance)
- Remplissage des 2 matrices en même temps et format temps en [h]:mm afin de pouvoir exploiter les données facilement (Merci Eric :p )
- Possibilité de visualiser le trajet (dans Matrice Temps) en cliquant sur une case et en appuyant sur le bouton
- Modifications des villes depuis la feuille Matrice Distance, reproduisant celle-ci dans Matrice Temps
 

Pièces jointes

  • Distance Google Maps-v3.xlsm
    55.2 KB · Affichages: 6 544
  • Distance Google Maps-v3.xlsm
    55.2 KB · Affichages: 3 376
  • Distance Google Maps-v3.xlsm
    55.2 KB · Affichages: 4 566
Dernière édition:

ti_mouton

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour à tous, et merci pour ce super fichier partagé ! J'aurais néanmoins besoin d'un peu d'aide, je débute en VBA et j'ai tenté de copier/coller les codes des modules 1 et 3 pour les insérer dans mon fichier, mais bien évidement ça bug, et comme j'ai du mal à comprendre toute les lignes des codes je n'arrive pas à voir pourquoi ça bloque... Je mets mon fichier à disposition si quelqu'un peu m'aider. De plus j'aimerais savoir si au lieu de calculer la durée, on pourrait changer le code pour qu'il me calcul les frais de péages quand il y en a.. ?

Merci pour votre aide
 

Pièces jointes

  • Frais Kilométriques Maintenance.xlsm
    37.8 KB · Affichages: 834
Dernière édition:

NezQuiCoule

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour ti_mouton, le forum,

Je suis désolé si je n'ai pas pu répondre à toutes vos demandes mais celles-ci demandent une adaptation du fichier à vos besoins, et j'avoue être un peu débordé niveau boulot. Je vous prie donc de m'excuser :rolleyes:

Pour la plupart de vos besoins, je pense que d'autres personnes peuvent vous apporter des solutions, en jetant son œil dans le code.
J'admets que le fichier en lui-même est peut-être un peu mal présenté mais il n'est pas interdit de s'en inspirer, bien au contraire !

Merci pour vos retours, et bon courage ! :)
 

ti_mouton

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour NezQuiCoule,

Votre fichier est très bien présenté, c'est simplement moi qui ai encore beaucoup trop de lacunes en VBA... Je vous remercie en tout cas d'avoir partagé votre travail, le fichier marche très bien si je copie mes données dans votre fichier, mais l'intérêt reste de pouvoir comprendre un peu mieux le code pour pouvoir le réutiliser par la suite. Je ne baisse pas les bras et espère trouver quelqu'un qui pourra m'éclairer :)

Merci encore, et bon courage pour le boulot.
 

Catastrophe

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour,

Merci pour ce fichier plus qu'utile (et qui comble mes rêves les plus fou).
Mais j'ai un problème, quand je lance le calcul, j'ai cette erreur :
erreur1.JPG
le problème se situe à cette ligne :
erreur2.JPG

Avez-vous des idées sur quoi cela peut-être dû ?


EDIT : Résolu en changeant "Set oXH = CreateObject("msxml2.XMLHTTP")" par "Set oXH = CreateObject("msxml2.ServerXMLHTTP")"
Merci
 

Pièces jointes

  • erreur1.JPG
    erreur1.JPG
    17.3 KB · Affichages: 246
  • erreur2.JPG
    erreur2.JPG
    13.8 KB · Affichages: 214
Dernière modification par un modérateur:

NezQuiCoule

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour,
Merci pour ton retour qui pourra servir à d'autres personnes !
Cela peut venir des composants déjà installés sur le système ou bien de la version d'Office, ou peut-être encore de la connectivité internet..

Bonne journée
 

ktana93

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour et merci pour ce travail plus qu'utile.

Si certaines personnes (comme moi) sont intéressées pour avoir la distance à pied (et non en voiture), ainsi que l'affichage du plan directement sur le parcours à pied et non en voiture, il suffit de faire deux manips :

Dans la Sub "Visualiser" rajouter la commande "dirflg=w" a cet endroit :
ThisWorkbook.FollowHyperlink "http://maps.google.fr/maps?t=m&dirflg=w&saddr=" & Départ & "&daddr=" & Arrivée

et dans la Sub "calculer" changer le mode en "walking"

surl = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & _
Départ & "&destinations=" & Arrivée & _
"&mode=walking&sensor=false&units=metric"

Quant au temps de trajet, il est très simple à obtenir, même pas besoin de macro, il suffit de créer un nouvelle colonne en appliquant un ratio de 4,5km/h et vous obtiendrez le temps nécessaire en minutes... (Exemple avec 3km de distance. (3/4,5)*60

Merci encore !
 

poilamonnez

XLDnaute Junior
Re : Matrice de distances - Google Maps

Bonjour,

Tout d’abord un grand MERCI pour ce super fichier qui me rends pas mal de services.

ça fait 2 jours que je l'utilise pour calculer des trajets de ville à ville et j'ai du changer 2 petites choses dans une des sub (surement que c'est du à un récent changement de google-map ou peut-être parce-que je suis sur WIN 10).

Je place ci dessous les 2 changements que j'ai du faire dans le sub calculer, si ça intéresse quelqu'un

Remplacement de :
Temps_Texte = Replace(Temps_Texte, " weeks", "w")
Temps_Texte = Replace(Temps_Texte, " week", "w")
Temps_Texte = Replace(Temps_Texte, " day", "j")
Temps_Texte = Replace(Temps_Texte, " hours", "h")
Temps_Texte = Replace(Temps_Texte, " hour", "h")
Temps_Texte = Replace(Temps_Texte, " mins", "m")
Temps_Texte = Replace(Temps_Texte, " min", "m")
Temps_Texte = Replace(Temps_Texte, " seconds", "s")
Temps_Texte = Replace(Temps_Texte, " second", "s")
Par :
Temps_Texte = Replace(Temps_Texte, " semaines", "w")
Temps_Texte = Replace(Temps_Texte, " semaine", "w")
Temps_Texte = Replace(Temps_Texte, " jours", "j")
Temps_Texte = Replace(Temps_Texte, " jour", "j")
Temps_Texte = Replace(Temps_Texte, " heures", "h")
Temps_Texte = Replace(Temps_Texte, " heure", "h")
Temps_Texte = Replace(Temps_Texte, " minutes", "m")
Temps_Texte = Replace(Temps_Texte, " minute", "m")
Temps_Texte = Replace(Temps_Texte, " secondes", "s")
Temps_Texte = Replace(Temps_Texte, " seconde", "s")
Et remplacement de :
Distance = Replace(Distance, ",", "")
Par
Distance = Replace(Distance, ",", ".")

Cordialement et encore merci
 
Dernière édition:

BenHarber

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour NezQuiCoule, le Forum
Je m'associe à toutes les félicitations déjà exprimées sur cette idée : c'est un travail vraiment clair, efficace et très facile à adapter aux cas personnels...en bref : génialissime !!
Merci beaucoup pour ce partage.
Cordialement,
BH
 

wonder

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour Nezquicoule

Tout d'abord un grand merci pour ce fichier magique. Cela fait longtemps que je rame avec les calculs de distances
Par contre après quelques utilisation le fichier n'affiche plus les distances (resultats 0)
Est ce qu'il y a une limite dans le nombre de calculs?
Merci
 

Merlin258413

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour votre fichier a l'air très intéressant mais malheureusement je ne peux pas l'utiliser car j'ai une erreur de compilation : Membre de méthode ou de données introuvable le curseur s'arrête sur ****.Progression.
Pouvez vous m'aider ? en vous remerciant
 

Merlin258413

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour ce fichier me semble fort utile et le travail est considérable lorsque je veux lancer ce fichier j'ai une erreur de compilation Membre de méthode ou de données introuvable et j'ai afficher.progression et surtout le terme progression surligné Savez vous pourquoi ?
merci pour votre aide
 

BenHarber

XLDnaute Occasionnel
Re : Matrice de distances - Google Maps

Bonjour le Forum,
A propos de cette excellente appli, j'ai un petit soucis (très marginal par rapport au nombre d'itinéraires traités) : lorsqu'une adresse n'est pas référencée dans Google Maps, le programme me retourne quand même une distance, la plus souvent aberrante...et impossible de connaître l'adresse sur laquelle cette distance aberrante est calculée !
Avez-vous déjà rencontré cette anomalie ?
Si oui, voici ma question : dans le cas d'une adresse non concordante, serait-il la possibilité d'inscrire "Adresse non référencée" ?

Merci d'avance pour votre retour !

PS : j'ai constaté, comme certains l'ont déjà signalé,qu'après quelques utilisation le fichier n'affiche plus les distances (résultats = 0).
Cependant, j'ai aussi remarqué qu'après écoulement d'un certain temps, ou une relance du micro, ou tout bonnement réalisation de la tâche par un autre micro (quand le fichier est partagé en réseau), les calculs de distances apparaissent à nouveau...En bon utilisateur de base, j'en ai conclu que les courroies du programme se détendaient après un usage intensif et qu'il fallait laisser le se reposer un peu.... ;-)
 

MP90

XLDnaute Nouveau
Bonjour,

génial ton code vraiment excellent. Juste pour info :
on est limité à 2500 requêtes par jour et 50 par secondes.

Sinon je viens de tester tout fonctionne like a charm, mais la matrice des temps elle ne veut rien entendre. :/
par contre si je rajoute une ville dans la matrice distance, et que, j'ai effacé avant l'indexation automatique dans la matrice temps, et bien, cette nouvelle ligne/colonne se remplie.. je suis un peu perdu du coup.

Une autre petite question : pourquoi autant de manipulation pour les temps ??? il me semble que l'api est censée retourner value en seconde et texte en "heure:minutes:secondes etc" ?? à lire d'autres script bien moins réussis que le tien, aucun n'est aussi complexe pour extirper ces infos... du coup je nage dans ton code.

Merci.

EDIT : Alors en vidant complètement la matrice des distances, puis en ajoutant ensuite les villes, la matrice des temps se met bien à jour.
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
304

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400