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
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
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
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 :
966288e2-1b5f-4f81-8afe-3974860aa84d@googlegroups.com...
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.
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
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
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$1@speranza.aioe.org...
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 :
966288e2-1b5f-4f81-8afe-3974860aa84d@googlegroups.com...
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.
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.
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
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.
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
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 :
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
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 :
2a490a1f-321e-44fd-a76c-216ee9cbb849@googlegroups.com...
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.
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 :
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
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
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.
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
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
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 :
ca5c80c4-dd07-4814-bc7e-3235c3b2f5e4@googlegroups.com...
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.
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
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
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=" _ & 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 '---------------------------------------------------------------------
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
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=" _
& 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
'---------------------------------------------------------------------
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
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=" _ & 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 '---------------------------------------------------------------------
JP
Bonjour Denis,
Cà c'est du code. Merci à l'illustre inconnu auteur de cette fonction. Je vais pouvoir jouer.
Merci à toi.
JP
Bonjour Denis,
Cà c'est du code.
Merci à l'illustre inconnu auteur de cette fonction.
Je vais pouvoir jouer.