Bonjour,
Je suis en train de tenter de créer un petit module sous vba afin de pouvoir convertir des coordonnées (latitude, longitude) en adresse avec OpenStreetMap. Le code fonctionne quand je saisis des nombres entiers mais malheureusement dès que je rentre des valeurs négatives ou des coordonnées non entières, j'obtiens des messages d'erreur de type "valeur" ou bien une erreur de type "impossible to geocode". Je souhaiterais bénéficier de votre aide afin que cela puisse fonctionner (cela ne fait pas longtemps que j'ai commencé à me mettre à Vba).
Voici mon code :
Function NominatimReverseGeocode(lat As Double, lng As Double) As String
On Error GoTo eh
Dim xDoc As New MSXML2.DOMDocument
xDoc.async = False
Url = "https://nominatim.openstreetmap.org/reverse?lat=" & lat & "&lon=" & lng
xDoc.Load (Url)
If xDoc.parseError.ErrorCode <> 0 Then
Application.Caller.Font.ColorIndex = vbErr
NominatimReverseGeocode = xDoc.parseError.reason
Else
xDoc.SetProperty "SelectionLanguage", "XPath"
Dim loc As MSXML2.IXMLDOMElement
Set loc = xDoc.SelectSingleNode("/reversegeocode/result")
If loc Is Nothing Then
Application.Caller.Font.ColorIndex = vbErr
NominatimReverseGeocode = xDoc.XML
Else
Application.Caller.Font.ColorIndex = vbOK
NominatimReverseGeocode = loc.Text
End If
End If
Exit Function
eh:
Debug.Print err. Description
End Function
Partager