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
 

dysorthographie

XLDnaute Accro
Chatgpt à dit:
Si vous utilisez uniquement une connexion Ethernet (RJ45), la précision de votre géolocalisation sera principalement limitée par votre adresse IP, ce qui, dans la plupart des cas, ne sera pas aussi précis que les méthodes basées sur le GPS ou les réseaux Wi-Fi.

### Pourquoi la géolocalisation via Ethernet (IP) est limitée :

- **Localisation par adresse IP** : En utilisant une connexion Ethernet, la localisation est basée sur l'adresse IP attribuée par votre fournisseur d'accès à Internet (FAI). Cette méthode est généralement précise à l'échelle d'une ville ou d'une région, mais pas à l'échelle de quelques mètres. La précision dépend du type d'IP (statique ou dynamique) et du nombre de serveurs proxy ou de relais réseau que vous traversez.

- **Problème avec la précision** : Une adresse IP publique donnée peut être associée à une large zone géographique, parfois à des dizaines de kilomètres de votre position réelle. C'est pour cela que, même si vous êtes dans une zone urbaine dense, vous pourriez être géolocalisé à 50 mètres ou plus de votre position réelle.

### Comment maximiser la précision avec une connexion RJ45 (IP) :
1. **Utiliser plusieurs services de géolocalisation IP** : Chaque fournisseur de service de géolocalisation (comme IPStack, IPinfo, ou FreeGeoIP) peut avoir une base de données d'IP légèrement différente. Tester plusieurs services pourrait donner des résultats plus précis.

Vous pouvez essayer les services suivants :
- **ipinfo.io**
- **ipgeolocation.io**
- **ipstack.com**

2. **Code VBA pour tester différentes APIs** :
Voici un exemple VBA pour utiliser plusieurs API et comparer les résultats. Cela peut vous aider à trouver le service qui vous donne la localisation la plus précise.

```vba
Sub GetIPLocation()
Dim http As Object
Dim url As String
Dim response As String

' Utiliser IPInfo
Set http = CreateObject("MSXML2.XMLHTTP")
url = "https://ipinfo.io/json" ' API IPInfo
http.Open "GET", url, False
http.Send
response = http.responseText
MsgBox "IPInfo.io result: " & response

' Utiliser IPStack
Set http = CreateObject("MSXML2.XMLHTTP")
url = "http://api.ipstack.com/check?access_key=YOUR_API_KEY" ' API IPStack
http.Open "GET", url, False
http.Send
response = http.responseText
MsgBox "IPStack result: " & response

' Utiliser ipgeolocation.io
Set http = CreateObject("MSXML2.XMLHTTP")
url = "https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY" ' API ipgeolocation.io
http.Open "GET", url, False
http.Send
response = http.responseText
MsgBox "IPGeolocation.io result: " & response
End Sub
```

**Note** : Vous devrez vous inscrire à ces services pour obtenir une clé API (gratuite dans la plupart des cas).

3. **Vérifiez votre adresse IP publique** :
Parfois, la localisation est très inexacte si votre IP publique change régulièrement ou si elle est associée à un serveur d'une autre ville. Vous pouvez utiliser des services comme `whatismyip.com` pour vérifier votre IP publique et voir si elle est bien attribuée à votre zone géographique.

### Autres solutions si vous êtes limité à une connexion RJ45 :
- **Utiliser un VPN localisé près de chez vous** : Si la localisation par IP n'est pas suffisamment précise, l'utilisation d'un VPN peut parfois vous permettre de simuler une position proche de votre emplacement réel.

- **Services locaux payants (si nécessaire)** : Certains services de localisation offrent des options payantes qui fournissent des données plus précises ou plus fréquentes, mais ceux-ci sont rarement gratuits.

En résumé, avec une connexion Ethernet (RJ45), vous êtes limité à la précision de la géolocalisation par IP, qui dépend fortement de votre FAI. L'usage de plusieurs services d'IP et une comparaison des résultats peut légèrement améliorer la précision, mais atteindre une précision inférieure à 50 mètres est très difficile sans une technologie basée sur le GPS ou le Wi-Fi.,
 

jurassic pork

XLDnaute Occasionnel
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 :
===== 23 avenue commune de Paris Hennebont =====
======== Position avec ApiAdresseGouv =========
Latitude : 47.799765 - Longitude : -3.265957
======== Position avec OpenStreetMap Nominatim =========
Latitude : 47.7997640 - Longitude : -3.2659570
======== Position avec GoogleApis =========
Latitude : 47.7997487 - Longitude : -3.2658122
===== 25 avenue commune de Paris Hennebont =====
======== Position avec ApiAdresseGouv =========
Latitude : 47.800003 - Longitude : -3.26778
======== Position avec OpenStreetMap Nominatim =========
Latitude : 47.7998932 - Longitude : -3.2674882
======== Position avec GoogleApis =========
Latitude : 47.7996538 - Longitude : -3.2658544

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 :
Position.gif

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.
Avec un crédit gratuit offert par Google de 200$ par mois et en limitant son quota à 1000 requêtes par jour (ce qui est faisable) , cela reste gratuit car un crédit de 200$ correspond à 40000 requêtes.
Donc si vous n'avez pas trop de requêtes à faire par jour vous pouvez envisager d'utiliser l'API googleapis sans coût.
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
 

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
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 172
Membres
112 676
dernier inscrit
little_b