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
Sans la feuille "F_BD" le fichier passe de 1,144 Mo à... 277 ko !

Une liste de 38949 villes, qui fait 867 ko... Est-ce bien indispensable ??? 🙃


Et pourquoi ladite feuille va-t-elle jusqu'à la colonne 16131 alors que seulement deux colonnes semblent "utiles" ?
Bonjour Jacky,

Oui effectivement c'est bien ça, pourtant je l'avais exportée pour voir dans un classer vierge ça pesais pas tant.
L'histoire des colonnes je sais pas, c'est un vieux truc que j'ai sortie pour symplifier

Merci à toi ;) ;)
 

vgendron

XLDnaute Barbatruc
Hello
cette dernière version est pas mal aboutie..
juste une remarque sur le formulaire de départ pour récuperer l'adresse..
ca ne sert à rien de mettre des combobox (pour CP et Ville) vides..
soit tu les charges avec une liste (va etre longue) soit tu mets de simples TextBox
 

jurassic pork

XLDnaute Occasionnel
Hello,
A noter que sur le site ip-api.com on peut récupérer les infos en xml par http://ip-api.com/xml/ . Dans ce cas on peut faire une analyse en xml et plus besoin du module jsonConverter
VB:
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

Ami calmant, J.P
 

jcf6464

XLDnaute Impliqué
Bonjour a vous tous,

Un essai avec la V21 en mettant la bonne adresse cela pointe chez moi , essai avec une autre adresse idem au bon endroit avec le marqueur visible,

Un autre essai avec la V6 RD (Position adresse IP) toujours à 10kms de chez moi

Un autre essai avec (MaPositionGpsxml) dejurassic pork Voir photo toujours a 10kms mais dans la forêt !!!

Avec firefox windows 10 et excel 365

Bonne continuation jcf
 

Pièces jointes

  • 2024-09-05.jpg
    2024-09-05.jpg
    181.8 KB · Affichages: 3
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
La version que j'ai fourni avec IE me donne la photo de la baie vitrée de mon immeuble.
La version ou j'execute Google maps via la commande shell me positionne e 50 mettre de chez moi.

Maintenant je n'utilise pas de navigateur Microsoft, chrome ou firefox.

J'utilise Brave Basé sur Chromium, comme chrome et firefox.
 
Dernière édition:

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
 

Discussions similaires

Statistiques des forums

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