Sub MaPositionGpsxml()
Dim Pos As PositionGps
Pos = GPSxml
With Worksheets("MaPosition")
.Range("B1") = Pos.latitude
.Range("B2") = Pos.longitude
.Range("B3") = Pos.ville
'openUrl "https://www.google.com/maps?q=" & Pos.latitude & "," & Pos.longitude
End With
End Sub
Private Function GPSxml() As PositionGps
Dim Position As Object
' Obtenir la position de l'utilisateur
Set Position = GetCurrentPositionIPxml()
' Extraire les informations de position
GPSxml.latitude = Position.SelectSingleNode("/query/lat").Text
GPSxml.longitude = Position.SelectSingleNode("/query/lon").Text
GPSxml.ville = Position.SelectSingleNode("/query/city").Text
Set Position = Nothing
End Function
Sub openUrl(URL As String)
' Ouvre l'URL dans le navigateur par défaut
Shell "cmd.exe /c start " & URL, vbHide
End Sub
Function GetCurrentPositionIPxml() As Object 'retourne la position à partir de l'IP du pc==> position du serveur du FAI
Dim http As Object, objDom As Object
Dim jsonResponse As Object
Dim xmlResponse As String
Dim URL As String
URL = "http://ip-api.com/xml/"
' Créer une instance de l'objet XMLHttpRequest et de l'objet DOM
Set http = CreateObject("MSXML2.XMLHTTP")
Set objDom = CreateObject("MSXML2.DOMDocument.6.0")
' Effectuer la requête GET
On Error GoTo ErrorHandler
http.Open "GET", URL, False
http.Send
xmlResponse = http.responseText
Set http = Nothing
objDom.LoadXML xmlResponse
Debug.Print "Latitude : " & objDom.SelectSingleNode("/query/lat").Text
Debug.Print "Longitude : " & objDom.SelectSingleNode("/query/lon").Text
Debug.Print "Ville : " & objDom.SelectSingleNode("/query/city").Text
' Retourner l'objet DOM
Set GetCurrentPositionIPxml = objDom
Exit Function
ErrorHandler:
' Gestion des erreurs
MsgBox "Erreur lors de la récupération des données : " & Err.Description
Set GetCurrentPositionIPxml = Nothing
Set http = Nothing
End Function