Distances routières entre plusieurs points GPS via GoogleMap

Bonjour à tous,

Je souhaiterais créer une macro VBA sur Excel pour récupérer la distance routière entre deux points définis par leur localisation GPS (latitude, longitude) en utilisant une web query vers GoogleMaps ou un autre site si ce n'est pas possible le faire avec Google Maps. J'ai regardé les forums et je n'ai pas trouvé de macro qui fonctionnent :/.

Merci d'avance pour votre aide/vos indications.

Bonjour sarahph

Essaye celà

'Calculer Google Maps distance entre deux adresses
Public Function GetDistance(start As String, dest As String)
    Dim firstVal As String, secondVal As String, lastVal As String
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
    secondVal = "&destinations="
    lastVal = "&mode=car&language=pl&sensor=false"
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
    objHTTP.Open "GET", URL, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
    Set matches = regex.Execute(objHTTP.responseText)
    tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
    GetDistance = CDbl(tmpVal)
    Exit Function
ErrorHandl:
    GetDistance = -1
End Function

entre plusieurs points

'Calculer Google Maps distance entre un certain nombre d'emplacements
Public Function MultiGetDistance(ParamArray args() As Variant) As Double
    MultiGetDistance = 0
    Dim startLoc As String, endLoc As String, i As Long
    For i = LBound(args) To UBound(args) - 1
        startLoc = args(i): endLoc = args(i + 1)
        MultiGetDistance = MultiGetDistance + GetDistance(startLoc, endLoc)
    Next i
End Function

MultiGetDistance ( "Marseille" , "Paris" , "Lille" , "Brest" )

et pour la durée

Public Function MultiGetDuration(ParamArray args() As Variant) As Double
    MultiGetDuration = 0
    Dim startLoc As String, endLoc As String, i As Long
    For i = LBound(args) To UBound(args) - 1
        startLoc = args(i): endLoc = args(i + 1)
        MultiGetDuration = MultiGetDuration + GetDuration(startLoc, endLoc)
    Next i
End Function

Cordialement

Laurent

Merci Laurent, je viens de tester la macro et j'ai cette erreur:

" Erreur d'exécution '-2147012894 (80072ee2)' : le délai imparti à l'opération est dépassé "

A quoi cela est du?

merci d'avance

Bonjour sarahph

je viens de voir que tu es sous mac et le code ci dessus je crois que c'est pour windows

Dsl relance une discution et précise que tu es cette version : Version Excel: Mac 2013 EN

Cordialement

Laurent

C est vrai que ton code marche bien sous Windows, par contre comment fait-on pour l utiliser avec des coordonnees GPS (latitude, longitude)? merci d'avance

Rechercher des sujets similaires à "distances routieres entre points gps via googlemap"