Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Calendrier des marées info

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nicolas JACQUIN

XLDnaute Accro
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
 
 
Hello,
bon j'ai fait un essai avec l'adresse à Nicolas sur 3 geocodeurs : api-adresse-data , nominatim et googleapis.
Voici le code :
VB:
Sub PositionAvecApiAdresseGouv(adresse)
    Dim http As Object
    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
        res = .responseText
    End With
    Set http = Nothing
    résultat = Split(res, Chr(13))
    deb = InStr(1, res, "coordinates"":[")
    Fin = InStr(deb, res, "]")
    coor = Mid(res, deb + 13, Fin - (deb + 13) + 1)
    lon = Split(Split(coor, ",")(0), "[")(1)
    lat = Split(Split(coor, ",")(1), "]")(0)
    Debug.Print "========  Position avec  ApiAdresseGouv ========="
    Debug.Print "Latitude : " & lat & " - Longitude : " & lon
End Sub

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

Sub PositionWithGoogleApis(adresse)
    Dim http As Object, objDom As Object, res
    Const BaseURL = "https://maps.googleapis.com/maps/api/geocode/xml?address="
    Const ApiKey = "MettreIciSonApiKey"
    Set http = CreateObject("MSXML2.XMLHTTP")
    Set objDom = CreateObject("MSXML2.DOMDocument.6.0")
    URL = BaseURL & adresse & "&key=" & ApiKey
    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 GoogleApis ========="
    Debug.Print "Latitude : " & objDom.SelectSingleNode("//location/lat").Text & _
    " - Longitude : " & objDom.SelectSingleNode("//location/lng").Text
    Set objDom = Nothing
End Sub

Sub RecupPositions()
Const adresse1 = "23 avenue commune de Paris Hennebont"
Const adresse2 = "25 avenue commune de Paris Hennebont"
Debug.Print "===== " & adresse1 & " ====="
PositionAvecApiAdresseGouv adresse1
PositionAvecNominatim adresse1
PositionWithGoogleApis adresse1
Debug.Print "===== " & adresse2 & " ====="
PositionAvecApiAdresseGouv adresse2
PositionAvecNominatim adresse2
PositionWithGoogleApis adresse2
End Sub
et voici les résultats :

Pour le 23 c'est à peu près bon pour tout le monde , par contre pour le 25 c'est GoogleApis qui est le plus
précis :

GoogleApis est en plus la plus rapide à répondre. Le souci c'est qu'il faut une ApiKey (je n'ai pas mis la mienne ici). On pourrait croire en s'inscrivant que c'est payant mais si on ne fait pas trop de requêtes (< 40000 par mois) avec, cela reste gratuit.
Moi avec ma limitation à 1000 requêtes par jour je n'ai jamais rien payé et si on me vole ma clé cela bloquera l'utilisation. A vérifier aussi que Google ne change pas ses conditions d'utilisation.
Ami calmant, J.P
 
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
 
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 ??



Je sèche
 

Pièces jointes

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:
Merci de ta réponse, ça match, c'est à 100, 150 mètres de ma position.
C'est dommage, l'utilisateur n'aura pas cette logique pour rentrer son adresse si il n'y connais rien, c'était précis pourtant, enfin moi c'est le mieux pour l'instant.
Merci
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…