1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| Sub distancier_google()
'Dans lexemple ladresse de départ et darrivée sont en Feuil1 cellule A2 et B2
'On va recupérer la distance et le temps de parcours en fonction des lieux saisis
With Worksheets(1)
Dim nbligne As Long
nbligne = GetLastLineInRange(.Range("a1:b1"))
End With
For i = 2 To nbligne Step 1
'ActiveWorkbook.Worksheets(1).Cells(i, 1).Value = ""
'ActiveWorkbook.Worksheets(1).Cells(i, 2).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 3).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 4).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 5).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 6).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 7).Value = ""
ActiveWorkbook.Worksheets(1).Cells(i, 8).Value = ""
' Initialisaton des variables
'lancement de l'api google la clef est personnelle et doit être modifiée
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "false"
URL = "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & ActiveWorkbook.Worksheets(1).Cells(i, 1).Value & "&destinations=" & ActiveWorkbook.Worksheets(1).Cells(i, 2).Value & "&language=fr-FR&key=lancement de l'api google la clef est personnelle et doit être modifiée"
xmlDoc.Load (URL)
'MsgBox (URL)
For Each Distances In xmlDoc.SelectNodes("/DistanceMatrixResponse")
Status = Distances.SelectSingleNode("status").Text
If Status = "OK" Then
Depart = Distances.SelectSingleNode("origin_address").Text
Arrivee = Distances.SelectSingleNode("destination_address").Text
For Each Row In xmlDoc.SelectNodes("/DistanceMatrixResponse/row/element")
Status = Row.SelectSingleNode("status").Text
If Status = "OK" Then
'on imbrique 2 boucles "la distance" et le "temps"
For Each Distance In xmlDoc.SelectNodes("/DistanceMatrixResponse/row/element/distance")
En_M = Distance.SelectSingleNode("value").Text
En_KM = Distance.SelectSingleNode("text").Text
For Each Duration In xmlDoc.SelectNodes("/DistanceMatrixResponse/row/element/duration")
En_SS = Duration.SelectSingleNode("value").Text
En_MM = Duration.SelectSingleNode("text").Text
Next
Next
Else
End If
Next
Else
End If
Next
Set xmlDoc = Nothing
'on recuère le résultat des boucles dans les cellules C2 à H2
ActiveWorkbook.Worksheets(1).Cells(i, 3).Value = Depart
ActiveWorkbook.Worksheets(1).Cells(i, 4).Value = Arrivee
ActiveWorkbook.Worksheets(1).Cells(i, 5).Value = En_KM
ActiveWorkbook.Worksheets(1).Cells(i, 6).Value = En_M
ActiveWorkbook.Worksheets(1).Cells(i, 7).Value = En_MM
ActiveWorkbook.Worksheets(1).Cells(i, 8).Value = En_SS
Next i
End Sub |