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

GUY rrr

XLDnaute Occasionnel
Bonsoir tatiak, le forum,

Merci pour votre réponse rapide et pour cette adaptation.
Néanmoins, votre nouveau code ne prend pas en charge la durée du trajet alors que ce dernier apparait sur les résultats du site.
Je ne parviens pas à adapter votre nouveau code à votre précédent:

VB:
Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************


Public Const DIST = "http://www.distance2villes.com/recherche?source="


Sub Distance()
Dim lg As Integer, i As Integer
Dim Url As String, Txt As String, S As String

    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To lg
            Url = DIST & .Range("A" & i).Value & "&destination=" & .Range("B" & i).Value
            With CreateObject("WINHTTP.WinHTTPRequest.5.1")
                .Open "GET", Url, False
                .send
                Txt = .responseText
            End With
            If InStr(1, Txt, "distanciaRuta") > 0 Then
                .Range("C" & i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
                .Range("D" & i).Value = Split(Split(Txt, """tiempo"">")(1), "</")(0)
            Else
                .Range("C" & i).Value = ""
                .Range("D" & i).Value = "Pas de réponse"
            End If
        Next i
    End With
End Sub

Vous serait-il possible d'effectuer la modification ?

Merci pour votre retour
 

GUY rrr

XLDnaute Occasionnel
Bonsoir tatiak, François G, le forum,

tatiak, merci pour votre retour, même en espagnol ... pour l'instant ... jusqu'à l'allemand ;).
Dans le but de conserver la même structure du précédent fichier (multiplié par autant de départements français), je me permets de vous réitérer ma demande du #101, dans la limite de votre disponibilité.

Merci pour votre intervention et votre retour
 

heldach

XLDnaute Nouveau
Bonjour à tous,

Avec ce site il est aussi possible de récupérer l'itinéraire qu'on peut dessiner sur une carte.
Regarde la pièce jointe 1064752
Sinon, perso je préfère les liaisons tardives pour que le fichier s'ouvre sans souci même avec des versions anciennes d'excel.

Et Brest (29) s'affiche au bon endroit avec l'indication Brest Finistere
Pierre
Vous êtes excellent
 

Kiko_abcdr

XLDnaute Nouveau
Bonsoir à tous,
Voici une version complétée de l'excellent fichier de Tatiak



Pour que ce fichier fonctionne, n'oubliez pas d'activer les deux références : « Microsoft Internet Controls » et « Microsoft HTML Object Library » via menu Outils -> Références dans l'éditeur VBA.
Salutations confinées mais parfaitement amicales!

Bonjour

J'essaie de calculer des distances avec le fichier du message ci-dessus, mais j'ai un message qui s'affiche : "Erreur d'éxecution 91 Variable objet ou variable de bloc With non définie". Quelqu'un saurait comment régler ce problème ? Merci !
 

Loice

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour,

après de nombreuses recherches j'ai presque trouvé le graal avec votre fichier.
Je cherche en effet la possibilité de faire des calculs de distance et temps en masse.
L'idée est de pouvoir avoir pour chaque CP français la distance et le temps par rapport aux 6000 et quelques autres.
Je viens donc de faire le test sur le premier avec les 6000 autres. Le temps de calcul est approximativement de 6 minutes ce que je trouve super rapide.
Néanmoins je constate qu'un certain nombre ou plutôt un nombre certain des CP sont indiqués en distance à 0.
D'où ma première question, y-a-t-il un nombre limite d'entrée?
C'est peut-être aussi mon fichier en entrée mais je ne vois pas pourquoi certains CP seraient bons et pas les autres étant donné que sa construction est faite dans SAS en une fois.

La deuxième question est que je n'ai pas trouvé la notion de temps dans le premier onglet.
Y-a-t-il un moyen de rajouter cette notion juste à droite de la colonne distance?

La dernière qui est de savoir quelle distance est remontée de Google maps dès lors que celui-ci propose en général 3 itinéraires possibles.

Merci d'avance pour vos éclairages et en tout cas merci déjà pour le travail effectué.

Cordialement.
Bonjour, Est-ce que vous avez trouvé une solution ? J'utilise la fonction drivingdistance sur google sheet (car je n'ai que excel 2010) et je suis limité en nombre de calculs. Hier j'ai pu calculer plusieurs distances puis plus rien. J'ai lu qu'on avait un quota google par jour, mais aujourd'hui, ça ne fonctionne toujours pas.

Help :)
 

escouger

XLDnaute Occasionnel
Bonjour,
J'utilise depuis 1 an environ cette possibilité de récupérer depuis le site
"http://www.distance2villes.com/recherche?source=""
la distance et le temps de trajet. C'est super.
Je viens cependant de trouver une petite erreur sur un trajet 'Saverne - Steinbourg' .
Le résultat (10Km) correspond à un trajet 'Saverne - Hattmatt'.
Ce village de Hattmatt est situé à 3 km après steinbourg en venant de Saverne.
Le résultat "Saverne - Steinbourg" aurait normalement dû être 7 Km.
Hattmatt et Steinbourg sont 2 communes différentes (à moins que cela ait changé très récemment?)
J'ai vu qu'il existait un autre site "http://www.distancedeuxvilles.com" (le 2 est devenu deux), mais il semble qu'il soit complètement différent et qu'il redirige les demandes vers google maps. En tous cas si je déclare ce site dans la constante VBA à la place du site initial çà ne marche pas.
Pouvez-vous me dire si cette erreur de calcul est due au site "http://www.distance2villes.com" , si elle est ponctuelle ou, plus ennuyeux si ce site est devenu obsolète ou non fiable.
Dans ce dernier cas quel pourrait être l'Url d'un autre site dont on puisse ainsi extraire sous forme d'un string les éléments de réponse.
Merci d'avance de votre réponse
 

Pièces jointes

  • Distances_entre_2villes-1.xlsm
    20 KB · Affichages: 76

ben slama

XLDnaute Nouveau
Re : Matrice de distances - Google Maps

Bonjour, est ce que quelq'un peut m'aider? le fichier attaché est déjà excellent mais est ce que quelq'un peut modifer le lieu de départ et d'arrivée en coordonnée géographique degré décimaux (du genre latitude=-18,8358 et longitude=47,5586). Merci d'avance. Si possible envoyer un fichier attaché comme exemple.
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502