Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Distance entre deux villes google maps

14 réponses
Avatar
JP
Bonjour,

Je voudrais calculer des distances entre villes avec Google maps.
Apr=E8s une recherche sur le forum et sur le net, j'ai trouv=E9 un code qui=
en 2004 semblait fonctionner.

Sub Test()
For Each X In Sheets("Feuil1").Range("A2:" & Sheets("Feuil1").Range("A65536=
").End(xlUp).Address)
Sheets("Feuil2").Cells.Clear
Depart =3D X.Value
Arrivee =3D X.Offset(0, 1).Value
With Sheets("Feuil2").QueryTables.Add(Connection:=3D"URL;http://maps.go=
ogle.fr/maps?f=3Dd&saddr=3D" & Depart & "&daddr=3D" & Arrivee, Destination:=
=3DSheets("Feuil2").Range("A1"))
.Name =3D "itin=E9raire"
.BackgroundQuery =3D True
.WebSelectionType =3D xlEntirePage
.WebFormatting =3D xlWebFormattingNone
.Refresh BackgroundQuery:=3DFalse
End With
=20
Set Result =3D Sheets("Feuil2").Cells.Find("Itin=E9raire en voiture")
If Result Is Nothing Then
X.Offset(0, 2) =3D "Itin=E9raire non trouv=E9 !"
Else
X.Offset(0, 2) =3D Result.Offset(1, 0)
km =3D Split(Result.Offset(1, 0), " km")
X.Offset(0, 3) =3D km(0)
End If
Next
End Sub

La requete semble dysfonctionner

10 réponses

1 2
Avatar
JP
désolé! erreur de touche.

Je continue donc mon message:
La requete semble dysfonctionner au niveau de with ... end with

Est-ce l'un d'entre vous pourrait m'apporter de l'aide.

Merci

JPierre
Avatar
Jacquouille
Bonjour
Il y a, à mes yeux, deux distances entre deux villes.
La distance par route, ce qu'un GPS te calculera mieux que quiconque.
Il y a aussi la distance entre deux points.
Pour cela, tu peux faire une soustraction des coordonnées (Long-Lat) si
elles sont exprimées en UTM et si elles sont sur le même parallèle. Sinon,
il te faudra utiliser le bon vieux Pythagore.
Si elles sont en degrés, min et sec, il te faudra faire une bonne vieille
règle de trois.(en plus).

Je me souviens qu'un certain modeste avait, en son temps, résolu ce
problème. S'il nous lit .....

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


désolé! erreur de touche.

Je continue donc mon message:
La requete semble dysfonctionner au niveau de with ... end with

Est-ce l'un d'entre vous pourrait m'apporter de l'aide.

Merci

JPierre
Avatar
Jacquouille
Peut-être ceci ?

http://fr.wikipedia.org/wiki/Orthodromie
J'ai aussi retrouvé ceci qui utilise les long-lat de deux points:
'c72 * (PI()/2 - ASIN( SIN(RADIANS(LatA)) * SIN(RADIANS(LatB))
+cos(radians(lonA)-radians(lonB))*cos(radians(latA))*cos(radians(latB))))

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
lc2kbn$uuu$

Bonjour
Il y a, à mes yeux, deux distances entre deux villes.
La distance par route, ce qu'un GPS te calculera mieux que quiconque.
Il y a aussi la distance entre deux points.
Pour cela, tu peux faire une soustraction des coordonnées (Long-Lat) si
elles sont exprimées en UTM et si elles sont sur le même parallèle. Sinon,
il te faudra utiliser le bon vieux Pythagore.
Si elles sont en degrés, min et sec, il te faudra faire une bonne vieille
règle de trois.(en plus).

Je me souviens qu'un certain modeste avait, en son temps, résolu ce
problème. S'il nous lit .....

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


désolé! erreur de touche.

Je continue donc mon message:
La requete semble dysfonctionner au niveau de with ... end with

Est-ce l'un d'entre vous pourrait m'apporter de l'aide.

Merci

JPierre
Avatar
JP
Bonjour Jacquouille,

Oui, j'ai vu cela au cours de mes recherches sur le net.
En fait ce qui se rapproche le plus de mon besoin, je l'ai trouvé sur ce site:
http://www.excel-downloads.com/forum/106712-macro-pour-calculer-la-distance -entre-deux-villes-via-google-maps.html

C'est à cette adresse que j'ai trouvé le code de mon premier post.

Attendons de voir si d'autres ont des idées voire des solutions.

En tout cas merci.

JP
Avatar
Jacquouille
Et pourquoi pas ceci:
col A = départ
col B = arrivée
en C1 = 6372 * (PI()/2 - ASIN( SIN(RADIANS(LatA)) * SIN(RADIANS(LatB))
+cos(radians(lonA)-radians(lonB))*cos(radians(latA))*cos(radians(latB))))
Toute la formule sur une seule ligne, puis tirer la formule vers le bas.

maintenant, si tu cherches la distance via la route, je ne crois pas qu'une
formule puisse le faire car il y a des villes qui sont reliées par une route
absolument droite, tandis que d'autres te font des zigs et des zags,
doublant la distance .....

Si tu n'exiges pas une précision absolue, tu peux faire ceci:
tu mesures la distance sur une carte, pour une dizaine d'exemples.
Ensuite, via ton logiciel préféré (MapSource, basecamp, Google ...), tu
refais les mêmes calculs.
Tu fais ensuite une moyenne, càd mesure AB = x et =y via logiciel. tu fais
cette moyenne et tu y constates que, en général, la route augmente de x % la
distance en ligne droite.
Tu appliques cette augmentation de x% à tes mesures sur carte et tu as tes
distances ....

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


Bonjour Jacquouille,

Oui, j'ai vu cela au cours de mes recherches sur le net.
En fait ce qui se rapproche le plus de mon besoin, je l'ai trouvé sur ce
site:
http://www.excel-downloads.com/forum/106712-macro-pour-calculer-la-distance-entre-deux-villes-via-google-maps.html

C'est à cette adresse que j'ai trouvé le code de mon premier post.

Attendons de voir si d'autres ont des idées voire des solutions.

En tout cas merci.

JP
Avatar
JP
Oui, tu as raison. Néanmoins je pense que si une solution existe avec un log comme Google maps ou via michelin pour ne citer que ceux là ce serait vraiment top.

Merci tout de même

JP
Avatar
Jacquouille
Méfies-toi quand même que chaque logiciel a ses préférences... quand ce
n'est pas toi qui peux les entrer (style: tout par autoroute, ou sans péage,
ou uniquement sur RN ou le + court...)
Tout cela te change très vite une distance de + de 20 km

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


Oui, tu as raison. Néanmoins je pense que si une solution existe avec un log
comme Google maps ou via michelin pour ne citer que ceux là ce serait
vraiment top.

Merci tout de même

JP
Avatar
MichD
Bonjour,

Essaie ceci :

Ceci te donne la distance entre Toulouse et Paris en kilomètres
en utilisant Google Maps.

Tu dois ajouter la référence suivante à ton projet VBA à partir
de la barre des menus / outils / références / coche :
"Microsoft XML, v6.0"

N.B. Je crois que Google limite le nombre de requêtes à 2500 par jour.
Cependant, si via une macro, tu essaies dans un très court laps de
temps d'effectuer un nombre important de requêtes (bien en deçà
de 2500) ça ne fonctionnera pas. Je n'ai pas les limites en absolu!!!

Tu peux aussi utiliser des adresses précises entre 2 points.
insère seulement un espace entre les composantes de tes adresses.


'---------------------------------------------------------------------
Sub test()
Dim Départ As String, Arrivée As String
Dim X As Variant

Départ = "Toulouse France"
Arrivée = "Paris France"

X = DISTANCE(Départ, Arrivée)
If X <> "" Then
MsgBox "La distance entre : " & vbCrLf & vbCrLf & """" & Départ & _
"""" & vbCrLf & " ET" & vbCrLf & """" & _
Arrivée & """" & vbCrLf & vbCrLf & "est de " & X & "
kilomètres."
End If
End Sub
'---------------------------------------------------------------------

'Je n'ai plus l'auteur de cette fonction. Dommage!

Function DISTANCE(ByVal Origin As String, ByVal Destination As String) As
Double
Dim myRequest As XMLHTTP60
Dim myDomDoc As DOMDocument60
Dim distanceNode As IXMLDOMNode
DISTANCE = 0
On Error GoTo exitRoute
Origin = Replace(Origin, " ", "%20")
Destination = Replace(Destination, " ", "%20")
Set myRequest = New XMLHTTP60
myRequest.Open "GET",
"http://maps.googleapis.com/maps/api/directions/xml?origin=&quot; _
& Origin & "&destination=" & Destination & "&sensorúlse", False
myRequest.send
Set myDomDoc = New DOMDocument60
myDomDoc.LoadXML myRequest.responseText
Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value")
If Not distanceNode Is Nothing Then DISTANCE = distanceNode.Text / 1000
exitRoute:
Set distanceNode = Nothing
Set myDomDoc = Nothing
Set myRequest = Nothing
End Function
'---------------------------------------------------------------------
Avatar
JP
Bonjour Denis,

Cà c'est du code.
Merci à l'illustre inconnu auteur de cette fonction.
Je vais pouvoir jouer.

Merci à toi.

JP
Avatar
MichD
Maintenant, j'ai une petite question pour toi...

Quelle formule utilisée pour calculer le nombre de nids de poule entre 2
villes?

;-)
1 2