XL 2021 Calendrier des marées info

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous,

A ceux qui ont le pied marin,

je voulais savoir s'il était possible de créer un calendrier des marées avec :
-les heures de marée Haute
-les heures de marée Basse

et éventuellement les coefs.

Je ne sais pas du tout si c'est possible, mais si certains ont déjà étudiés sur la chose je suis preneur.

Je sais qu'il y a plein de site en ligne qui donne ce que je veux, mais se serait pour compléter un calendrier
avec les phases lunaires, éphémérides ..........

Si ça peut aider je suis de la région Lorientaise (Bretagne)

En vous remerciant d'avance.

Nicolas
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Re jurassic pork,

VB:
Sub PositionAvecNominatim(adresse)
    Dim http As Object, objDom As Object, res
    Const BaseURL = "https://nominatim.openstreetmap.org/search.php?format=xml&q="
    Set http = CreateObject("MSXML2.XMLHTTP")
    Set objDom = CreateObject("MSXML2.DOMDocument.6.0")
    URL = BaseURL & adresse
    On Error Resume Next
    With http
        .Open "GET", URL, False
        .Send
        res = .responseText
    End With
    Set http = Nothing
    'Debug.Print res
    objDom.LoadXML res
    Debug.Print "========  Position avec OpenStreetMap Nominatim ========="
    Debug.Print "Latitude : " & objDom.SelectSingleNode("//place").getAttribute("lat") _
                & " - Longitude : " & objDom.SelectSingleNode("//place").getAttribute("lon")
    Set objDom = Nothing
End Sub

Celui là est pas mal mais j'ai du mal à adapter avec le formulaire de démarrage

Merci
Nico
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Mon problème d'adaptation,

VB:
Sub PositionAvecNominatim(adresse)
    Dim http As Object, objDom As Object, res
    Const BaseURL = "https://nominatim.openstreetmap.org/search.php?format=xml&q="
    Set http = CreateObject("MSXML2.XMLHTTP")
    Set objDom = CreateObject("MSXML2.DOMDocument.6.0")
    URL = BaseURL & adresse
    On Error Resume Next
    With http
        .Open "GET", URL, False
        .Send
        res = .responseText
    End With
    Set http = Nothing
    'Debug.Print res
    objDom.LoadXML res
    With Worksheets("MaPosition")
    'Debug.Print "========  Position avec OpenStreetMap Nominatim ========="
    Debug.Print objDom.SelectSingleNode("//place").getAttribute("lat") _
                                         & " " & objDom.SelectSingleNode("//place").getAttribute("lon")
    .Range("D2") = Info_adresse.TextBox1 & " " & Info_adresse.Cp & " " & Info_adresse.Cpville
    .Range("B2") = Info_adresse.Cpville
    .Range("G2") = objDom.SelectSingleNode("//place").getAttribute("lon")
    .Range("H2") = objDom.SelectSingleNode("//place").getAttribute("lat")
    End With
    Set objDom = Nothing
End Sub
Sub RecupPositions()
'Const adresse1 = "23 avenue commune de Paris Hennebont"
Const adresse2 = Info_adresse.TextBox1 & " " & Info_adresse.Cp & " " & Info_adresse.Cpville
'Debug.Print "===== " & adresse1 & " ====="
'PositionAvecApiAdresseGouv adresse1
'PositionAvecNominatim adresse1
'PositionWithGoogleApis adresse1
Debug.Print "===== " & adresse2 & " ====="
'PositionAvecApiAdresseGouv adresse2
PositionAvecNominatim adresse2
'PositionWithGoogleApis adresse2
End Sub

Bug ??

test form6.gif


Je sèche
 

Pièces jointes

  • Calendrier Ephéméride Marée V2.1 essai map.xlsm
    245.7 KB · Affichages: 2

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
adresse2 ne doit pas être une constante car il est constitué de "choses" variables . Faire ceci plutôt :
VB:
Sub RecupPositions()
Dim adresse2 As String
adresse2 = Info_adresse.TextBox1 & " " & Info_adresse.Cp & " " & Info_adresse.Cpville

J'ai plus de bug, mais ça ne récupère pas latitude n'y longitude

VB:
Sub PositionAvecNominatim(adresse)
    Dim http As Object, objDom As Object, res
    Const BaseURL = "https://nominatim.openstreetmap.org/search.php?format=xml&q="
    Set http = CreateObject("MSXML2.XMLHTTP")
    Set objDom = CreateObject("MSXML2.DOMDocument.6.0")
    URL = BaseURL & adresse
    On Error Resume Next
    With http
        .Open "GET", URL, False
        .Send
        res = .responseText
    End With
    Set http = Nothing
    'Debug.Print res
    objDom.LoadXML res
    With Worksheets("MaPosition")
    'Debug.Print "========  Position avec OpenStreetMap Nominatim ========="
    Debug.Print objDom.SelectSingleNode("//place").getAttribute("lat") _
                                         & " " & objDom.SelectSingleNode("//place").getAttribute("lon")
    .Range("D2") = Info_adresse.TextBox1 & " " & Info_adresse.Cp & " " & Info_adresse.Cpville
    .Range("B2") = Info_adresse.Cpville
    .Range("G2") = objDom.SelectSingleNode("//place").getAttribute("lon")
    .Range("H2") = objDom.SelectSingleNode("//place").getAttribute("lat")
    End With
    Set objDom = Nothing
End Sub

Sub RecupPositions()
Dim adresse2 As String
adresse2 = Info_adresse.TextBox1 & " " & Info_adresse.Cp & " " & Info_adresse.Cpville
PositionAvecNominatim adresse2
End Sub

Merci
 
Dernière édition:

jurassic pork

XLDnaute Occasionnel
Le mieux en fait c'est googlepapis (qui pointe sur ton logement) mais c'est pas facile à cause de l'apikey difficile à obtenir et en plus tu te chopes une facture tous les mois. Moi çà va elle est de 0 euros pour l'instant et si tu pointes sur le 23 de ta rue tous les géocodeurs sont très près de chez toi
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Le mieux en fait c'est googlepapis (qui pointe sur ton logement)

Je me doute, mais le but c'est que ce ne soit pas payant pour l'utilisateur, avec une utilisation facile, parce que même moi novice, on me demande mon adresse, je la rentre comme je la connais, je ne sais pas que le programme refuse l'adresse complète selon la forme.

Je vais du coup en rester à la version que j'avais même si moins précis, vise sur la ville quand même.
A moins d'une variante pour pouvoir corriger le problème.

Merci beaucoup.
Nicolas
 

jurassic pork

XLDnaute Occasionnel
Hello Nicolas,
pourquoi es-tu passé à Nominatim par rapport à api-adresse.data.gouv.fr ?
api-adresse.data.gouv.fr utilise la base de données française BAN
Si c'est à cause du décodage de la réponse , comme tu as le module VBA jsonConverter dans ton classeur, tu peux t'en servir pour décoder du json :

VB:
Sub PositionAvecApiAdresseGouv(adresse)
    Dim http As Object, res As Object, lat, lon, houseNum
    Const BaseURL = "https://api-adresse.data.gouv.fr/search/?q="
    Set http = CreateObject("MSXML2.XMLHTTP")
    URL = BaseURL & adresse
    On Error Resume Next
    With http
        .Open "GET", URL, False
        .Send
        Set res = JsonConverter.ParseJson(.responseText)
    End With
    Set http = Nothing
    lon = res("features")(1)("geometry")("coordinates")(1)
    lat = res("features")(1)("geometry")("coordinates")(2)
    houseNum = res("features")(1)("properties")("housenumber")
    Set res = Nothing
    Debug.Print "========  Position avec  ApiAdresseGouv ========="
    Debug.Print "Latitude : " & lat & " - Longitude : " & lon & " - HouseNumber : " & CStr(houseNum)
End Sub

j'ai rajouté dans le décodage housenumber car cela permet de savoir si la position du numéro dans la rue est connue.
J'ai testé avec les numéros de ta rue de 20 à 30 :
Code:
Sub RecupPositionsJP()
Dim adresse As String, i As Integer
For i = 20 To 30
   adresse = CStr(i) & " avenue de la commune de Paris Hennebont"
   PositionAvecApiAdresseGouv adresse
Next i
End Sub
Voici les résultats :
======== Position avec ApiAdresseGouv =========
Latitude : 47,800003 - Longitude : -3,26778 - HouseNumber :
======== Position avec ApiAdresseGouv =========
Latitude : 47,799843 - Longitude : -3,265896 - HouseNumber : 21
======== Position avec ApiAdresseGouv =========
Latitude : 47,799791 - Longitude : -3,266244 - HouseNumber : 22
======== Position avec ApiAdresseGouv =========
Latitude : 47,799765 - Longitude : -3,265957 - HouseNumber : 23
======== Position avec ApiAdresseGouv =========
Latitude : 47,799804 - Longitude : -3,266685 - HouseNumber : 24
======== Position avec ApiAdresseGouv =========
Latitude : 47,800003 - Longitude : -3,26778 - HouseNumber :
======== Position avec ApiAdresseGouv =========
Latitude : 47,799828 - Longitude : -3,266815 - HouseNumber : 26
======== Position avec ApiAdresseGouv =========
Latitude : 47,800003 - Longitude : -3,26778 - HouseNumber :
======== Position avec ApiAdresseGouv =========
Latitude : 47,799853 - Longitude : -3,266956 - HouseNumber : 28
======== Position avec ApiAdresseGouv =========
Latitude : 47,800003 - Longitude : -3,26778 - HouseNumber :
======== Position avec ApiAdresseGouv =========
Latitude : 47,800003 - Longitude : -3,26778 - HouseNumber :
Comme on peut le constater les numéros 20,25,27,29,30 ne sont pas connus et c'est alors toujours la même position qui est renvoyée (Latitude : 47,800003 - Longitude : -3,26778) qui est une position dans la rue qui correspond au numéro 36. Par contre tous les numéros de ma rue, eux sont connus.
Ami calmant, J.P
 

Discussions similaires

Statistiques des forums

Discussions
313 866
Messages
2 103 082
Membres
108 521
dernier inscrit
manouba