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 532
  • Distance Google Maps-v3.xlsm
    55.2 KB · Affichages: 3 373
  • Distance Google Maps-v3.xlsm
    55.2 KB · Affichages: 4 563
Dernière édition:

MP90

XLDnaute Nouveau
J'ai relevé un léger problème lorsque la distance atteint les mille kilomètres, la fonction ne retourne que 1.

Pour cela, il suffit de convertir en double les données récupérées :
Module 1 :
=> à la fin du code :
Distance = CDbl(Replace(Distance, ",", ""))
 
M

mj15

Guest
Bonjour,
Cet outil me sera très utile et est très très bien construit mais j'ai remarqué que les distances inférieures à 100 km et supérieures à 1000 km ne s'affichent pas correctement

Merci de votre réponse
 
O

Odile

Guest
NezQuiCoule ? Bonjour
T'es toujours parmi nous ?
Je viens juste de découvrir ton fichier et je le trouve extraordinaire
Voilà, chapeau bas

Est ce que tu as l'intention de faire une nouvelle version ?
Si c'est le cas, alors, qq idées pour l'optimiser
- pour les distances < 100 km, il manque l'affichage de la virgule pour les décimales (par exemple 22.8 au lieu de 228 affiché aujourd'hui)
- pour les distances > 1000 km, il s'affiche 1 au lieu de 1000 du fait de l'espace des milliers
- et enfin, pourrais tu ajouter 2 colonnes sur l'onglet 'Départ-Arrivée' : le temps et le coût en péage

D'avance merci pour ce que tu as fait et ce que tu feras peut être ???
Odile
 

Militaire29900

XLDnaute Nouveau
Bonjour à toutes et à tous, et merci pour l'excellent travail fait sur ce forum et sur ce sujet.
Je viens vers vous dans le cadre d'un distancier sur le même principe mais différent dans le mode de fonctionnement.
Je suis responsable d'un planning d'arbitrage prenant en compte les frais de déplacement afin de limité les coût sur une épreuves.
Je vous met en pièce jointe le fichier que je désire. Les coûts peuvent, je pense, être mis éventuellement sur une autre feuille.
Merci encore.
 

Pièces jointes

  • Distancier Arbitrage.xlsx
    12.8 KB · Affichages: 233

Militaire29900

XLDnaute Nouveau
Bonjour à tous,

Pour ce type de besoin, le VBA est inutile, on peut passer par les API de google.
Avec une première formule du type :
VB:
=SERVICEWEB("https://maps.googleapis.com/maps/api/distancematrix/xml?origins="&C$3&"&destinations="&$A5&"&mode=driving")
et une deuxième :
VB:
=ARRONDI(FILTRE.XML(B5;"/DistanceMatrixResponse/row/element/distance/value")/1000;1)

A noter : curieusement l'API de google de reconnait pas Bayonne mais BayonneS

Cette méthode fonctionne avec Office 2016, et je sais qu'avec 2007 ce n'est pas fonctionnel. Avec 2010, jamais testé

Pierre
114710505_o.gif
 

Ololyxes

XLDnaute Nouveau
Bonjour,

le fichier ne fonctionne plus du tout pour moi? Avez-vous le même problème? ça fonctionnait ce matin et depuis ça bug: d'abord distance incorrecte puis distance à 0 dans le premier onglet et case en noir dans les 2 suivants.

C'est vraiment dommage car il est très utile.

Je vous remercie par avance si vous avez une ide .
 

j.r15

XLDnaute Nouveau
Bonjour à toute la communauté.
un merci particulier à NezQuiCoule, pour tous ceux qui font des déplacement pro (donc soumis à remboursement) il faut faire une recherche sur Gmaps et c'est ..... voila .
j'ai pourtant une question pour NezQuiCoule.
j'ai fait mon petit recap perso depuis longtemps et en comparant les resultats du fichier "distances google map v3" et mon recap j'ai des écarts souvent mini mais voila.
un exemple de distance qui n'est pas la meme ?
colonne A : place de l'eglise, 71570 la chapelle de guinchay
colonne B: rue de lingendes, 71000 macon
resultat excel : 14.8
resultat direct sur google map :15.0
c'est du détail mais bon....
je ne sais pas trop comment poser la question
je me lance.....pourquoi ?

je renouvelle mes compliments et remerciements à vous tous....
 

NezQuiCoule

XLDnaute Occasionnel
Bonjour j.r15

En effet il peut arriver que les distances ne soient pas exactement les mêmes. Je pense que cela peut venir du fait que Google Maps ne suggère pas le même trajet selon les conditions de circulation qui sont prises en compte lors d'un itinéraire calculé à partir du navigateur, et peut-être pas à partir d'une simple requête avec l'API (c'est une piste...)

Sinon, que penseriez-vous d'une adaptation de ce fichier en utilisant non pas Google Maps qui, bien qu'efficace reste limité en terme d'usage (d'où les cases noires reçues au bout d'un certain temps) mais plutôt OSRM, exploitant Open Street Map qui lui est Open Source ?

J'en profite pour passer le bonjour à tout le monde :)
 

j.r15

XLDnaute Nouveau
Bonsoir à tous.
j'ai lu lors de mon arrivée sur le site (il y a quelques années) qu'il ne fallait pas avoir peur de poser une question puisqu'il n'y a pas de question bete.
Après quelques essaies je n'arrive pas à faire fonctionner le fichier "distances google map v3" en utilisant l'open source OSRM.
merci d'avance pour celui ou celle qui le fait déjà fonctionner de m'expliquer.
je suis un père (grand père même) câlin, alors ...
je vous fais à tous un gros câlin.
on en manque dans ce monde de brut et de solitude.:)
 

VINCENT2SOUYRI

XLDnaute Nouveau
Bonjour à tous,
Merci beaucoup pour tout le travail qui est fait sur ces petits outils.
J'utilise le fichier qui a été développé il y a quelque temps "itinéraire GOOGLE multi adresses" pour calculer des distance entre codes postaux.
J'aimerai beaucoup utiliser la version simplifiée "Distance google maps V3" mais les résultats n'affichent pas les virgules du coup je ne sais pas si j'ai 107 km ou 10,7 km par exemple.
Quelqu'un a t-il une version qui prend en compte les virgules ?

Merci beaucoup.
 

belhen

XLDnaute Nouveau
bonjour tatiak, je trouve super ton système par contre je suis débutant en vba et je ne comprends pas tout.
j'ai créer un onglet avec une liste d'adresse et j'essaye de la copier coller en colonne a et b mais cela ne s'actualise pas.
Ce que je recherche c'est d'obtenir un distancier sur une liste de site en utilisant ton système as-tu une solution simple ? comment faire pour actualiser les choses automatiquement en cas de nouveau site?

merci pour ton aide
 

Pièces jointes

  • distancier sites peb.xlsm
    55.6 KB · Affichages: 275

belhen

XLDnaute Nouveau
Commence par faire simple, dans le fichier Démojson.xslm, si tu entres :
* en colonne A => 25 Rue de la Hunaudaye, 22000 Saint-Brieuc, France
* en colonne B => 2 Bd de l'Europe, 22100 Dinan, France

Tu obtiens 55,11km en ligne droite / 64,03km en trajet / 0:45 en durée

Après si tu veux une grille il faut que tu saisisses l'ensemble des couples départ/arrivée en colonnes A/B pour pouvoir faire ta grille, soit pour 48 adresses différentes 48x48=2304 couples donc 2304 lignes...

Bon courage
Pierre

Ok je viens de finir ma base, par contre cela a été très long !!!
j'ai créer ma base que j'ai copié mais ensuite il a fallu que je clic dans la barre de formule pour faire juste " enter" afin de déclencher le calcul pour chaque ligne!
Par contre, il n'y aurait pas moyen de pouvoir éviter les manipulations ligne par ligne ?
voici le fichier, si tu as des idées d'amélioration je suis preneur.

merci par avance pour ton aide et ta réponse.
 

Pièces jointes

  • Copie de Xl0000006.xls
    1 MB · Affichages: 244

Discussions similaires

Réponses
13
Affichages
515
Réponses
4
Affichages
273