Calcul temps de trajet et distance entre ville

Résolu
cs_emmanuelle95 Messages postés 2 Date d'inscription mercredi 10 mars 2010 Statut Membre Dernière intervention 10 mars 2010 - 10 mars 2010 à 16:51
 Energystar - 6 mars 2013 à 18:33
Bonjour à tout le monde,


Je suis débutante en VBA et j'ai trouvé un programme qui, grâce à Googlemaps, permet de calculer des distances et des temps de trajet entre villes.


Voici les fonctions:

Function get_km(place_a, place_b)
my_xml_path = "http://maps.google.fr/maps?saddr=" & place_a &
"&daddr=" & place_b & "&ie=utf-8&v=2.1&cv=4.0.2744&hl=fr&output=kml"
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.Load (my_xml_path)
Set nodelist = xmlDoc.getElementsByTagName("description")
my_raw_string = nodelist.Item(nodelist.Length -
1).firstchild.nodevalue
get_km = Monextract(my_raw_string, ": ", "&")
End Function
Function get_driving_time(place_a, place_b)
my_xml_path = "http://maps.google.fr/maps?saddr=" & place_a &
"&daddr=" & place_b & "&ie=utf-8&v=2.1&cv=4.0.2744&hl=fr&output=kml"
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.Load (my_xml_path)
Set nodelist = xmlDoc.getElementsByTagName("description")
my_raw_string = nodelist.Item(nodelist.Length -
1).firstchild.nodevalue
get_driving_time = Monextract(my_raw_string, "environ ", ")")
get_driving_time = Replace(get_driving_time, "minutes", "")
If InStr(get_driving_time, "heure") 0 Then get_driving_time "00:"
& get_driving_time
get_driving_time = Replace(get_driving_time, "heures", ":")
get_driving_time = Replace(get_driving_time, "heure", ":")
get_driving_time = get_driving_time & ":00"
get_driving_time = Replace(get_driving_time, " ", "")
get_driving_time = TimeValue(get_driving_time)
End Function
Function Monextract(machaine, debut, fin)
PosH1 = InStr(1, machaine, debut)
PosH2 = InStr(1, machaine, fin)
long_first = Len(debut)
Leng = PosH2 - PosH1 - long_first
Monextract = Mid(machaine, PosH1 + long_first, Leng)

End Function


Donc je vais dans OUTIL/MACRO, je saisis le nom de la macro puis CREER.
Ensuite je saisis les fonctions entre SubNom () et End Sub. Mais dès que je rentre Function, End Sub disparaît et à la place End Function apparaît. Or après quand j'essaye d'exécuter ma macro, j'ai droit à ERREUR DE COMPILATION: End Sub attendu.


De plus, si je le saisis de la même manière:

my_xml_path = "http://maps.google.fr/maps?saddr=" & place_a &
"&daddr=" & place_b & "&ie=utf-8&v=2.1&cv=4.0.2744&hl=fr&output=kml"

j'ai droit à ERREUR EXPRESSION et il faut que je les écrive à la suite.


Merci à tous ceux qui prendront le temps de lire ce message et qui pourront m'aider à résoudre ces problèmes.
A voir également:

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 17:13
Ensuite je saisis les fonctions entre à la place de SubNom () et End Sub.



pour le second point, soit tu écrit ton instruction sur une seule ligne soit tu la découpe sur 2 lignes en utilisant le "symbole de découpe" qui est le _ à mettre à la fin de la première ligne précédé d'un espace :

....... & place_a & _
"&daddr=" .....

Attention à bien mettre l'espace avant le _


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
1
cs_emmanuelle95 Messages postés 2 Date d'inscription mercredi 10 mars 2010 Statut Membre Dernière intervention 10 mars 2010
10 mars 2010 à 18:19
Merci. Par contre je ne comprends pas ton à la place. Cela veut dire que je dois supprimer SubNom () et End Sub dès le début. Mais si je fais cela, je n'ai aucune macro à exécuter.
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
11 mars 2010 à 09:08
bonjour
pour appeler une fonction dans le code d'une sub il suffit de mettre son nom suivit des paramètres dont elle a besoin éventuellement
exemple:
private sub test()
    Monextract("texte", t, x) 
end sub

cela exécutera ta
Function Monextract(machaine, debut, fin)
    blablabla....
End Function

si c'est la solution, penser : REPONSE ACCEPTEE
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
11 mars 2010 à 09:17
pour être plus exact
private sub test()
    toto = Monextract("texte", t, x) 
end sub


et petit conseil:
Function Monextract(machaine, debut, fin)
n'est pas correct (la valeur retournée par la fonction n'est pas typée)
Function Monextract(machaine, debut, fin)as string
est correct (la valeur retournée par la fonction est typée)

il est clair que dans ce contexte ça marche mais un jour tu auras des problèmes à traiter des valeurs non typées du genre additionner une date avec une string ....et tes variables n'étant pas typées tu va chercher longtemps pour trouver l'erreur

si c'est la solution, penser : REPONSE ACCEPTEE
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
Cette fonction marchait en 2011

Je ressors cette ma base access cette année et elle me retourne "erreur".
Google Maps ne repondrait plus?

Merci pour votre réponse
0
Utilisateur anonyme
6 mars 2013 à 14:03
Bonjour Energystar,

J'utilisais autrefois un API "google images" (voir lien ici) dans un de mes projets. Un beau jour (ou une nuit d'ailleurs), google a supprimé cet API. Depuis, je me passe de ses services.
0
Bonjour Banana32,

Je ne vais pour l'instant pas mettre ma BD au rebut, mais je n'ai pas envie de réécrire du code et fais ma lessive à la main, en attendant...
0
Rejoignez-nous