Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

************* 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 )
- 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
 

Kiko_abcdr

XLDnaute Nouveau

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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…