Calcul temps de trajet et distance entre ville [Résolu]

Messages postés
2
Date d'inscription
mercredi 10 mars 2010
Statut
Membre
Dernière intervention
10 mars 2010
- - Dernière réponse :  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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
2
Date d'inscription
mercredi 10 mars 2010
Statut
Membre
Dernière intervention
10 mars 2010
0
Merci
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.
Commenter la réponse de cs_emmanuelle95
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
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
Commenter la réponse de pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
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
Commenter la réponse de pile_poil
0
Merci
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
Commenter la réponse de Energystar
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
0
Merci
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...
Commenter la réponse de Energystar