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

cs_emmanuelle95 2 Messages postés mercredi 10 mars 2010Date d'inscription 10 mars 2010 Dernière intervention - 10 mars 2010 à 16:51 - 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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 mars 2010 à 17:13
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

Merci cs_casy 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_casy
cs_emmanuelle95 2 Messages postés mercredi 10 mars 2010Date d'inscription 10 mars 2010 Dernière intervention - 10 mars 2010 à 18:19
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
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 11 mars 2010 à 09:08
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
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 11 mars 2010 à 09:17
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
Energystar - 5 mars 2013 à 21:01
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
Utilisateur anonyme - 6 mars 2013 à 14:03
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
Energystar - 6 mars 2013 à 18:33
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.