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
 

TooFatBoy

XLDnaute Barbatruc
C'est juste que si tu te bases sur le TS au lieu de la feuille, tu n'as pas besoin de modifier le code quand le TS change de taille ou de place.

Si les données de ton TS vont toujours de la ligne 2 de la feuille à la ligne 11, alors tout va bien. 😉
 

Staple1600

XLDnaute Barbatruc
Re bonjour tout le monde,

A Staple1600,
je n'est pas fait attention hier, mais y a t'il un moyen de mettre les marées du jour aujourd'hui en plus ??
Si possible très bien sinon tampi.

La c'est coupure vite fait, à ce soir sinon,
merci

A Bernard_XLD, élégant 🤣 🤣 , je vais peut-être revoir la chose 🤣🤣

Nico
Bonjour le fil

Comme le fichier posté par @jm.andryszak le fait superbement, plus rapidement et sans passer par PQ. je passe mon tour
Au passage, chapeau bas @jm.andryszak pour les petites VBA se trouvant dans le module 2 de son classeur
(petit en taille: 53,7Ko mais costaud niveau VBA)

@jm.andryszak
Cette partie du code est obligatoire, on peut la mettre en commentaire ?
VB:
For i = 1 To ActiveWorkbook.Names.Count
        If ActiveWorkbook.Names(i).Name = "'" & Worksheets(1).Name & "'" & "!Import_1" Or _
            ActiveWorkbook.Names(i).Name = Worksheets(1).Name & "!Import_1" Then
            'Range(ActiveWorkbook.Names(i).RefersToRange.Address).Select
            Exit For
        End If
Next
J'ai testé plusieurs fois en ayant commenté ces lignes.
Pas vu de loup, mais je suppose que si ces lignes sont là, c'est qu'il y a une raison.

@TooFatBoy
[Pour infos]
C'est la requête PQ qui génère automatiquement un TS lorsqu'elle se charge dans une feuille.
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour le fil

Comme le fichier posté par @jm.andryszak le fait superbement, plus rapidement et sans passer par PQ. je passe mon tour
Au passage, chapeau bas @jm.andryszak pour les petites VBA se trouvant dans le module 2 de son classeur
(petit en taille: 53,7Ko mais costaud niveau VBA)

@jm.andryszak
Cette partie du code est obligatoire, on peut la mettre en commentaire ?
VB:
For i = 1 To ActiveWorkbook.Names.Count
        If ActiveWorkbook.Names(i).Name = "'" & Worksheets(1).Name & "'" & "!Import_1" Or _
            ActiveWorkbook.Names(i).Name = Worksheets(1).Name & "!Import_1" Then
            'Range(ActiveWorkbook.Names(i).RefersToRange.Address).Select
            Exit For
        End If
Next
J'ai testé plusieurs fois en ayant commenté ces lignes.
Pas vu de loup, mais je suppose que si ces lignes sont là, c'est qu'il y a une raison.

@TooFatBoy
[Pour infos]
C'est la requête PQ qui génère automatiquement un TS lorsqu'elle se charge dans une feuille.

Bonjour Staple1600,

J'avoue que son code est bien aussi, il fonctionne bien, avec les chose bien rangées j'arrive pas à les intégrers dans mon userform, mais là je ne suis encore plus perdu 😰 😰
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour,
Voici une concaténation (jour d'appel + 10 jours suivants)
La difficulté résidait dans :
- Pas de date dans le tableau du jour
- Noms des colonnes différents (Après midi dans tableau du jour, Après-midi dans le tableau des 10 prochains jours)
Il y a donc une requête supplémentaire (en connexion uniquement), qui est ensuite combinée avec la requête principale

Bonjour, merci ç'est niquel là, tip top, reste que je règle mon intégration.
J'approche la fin
Vraiment un grand merci.
 

Staple1600

XLDnaute Barbatruc
Re

@Nicolas JACQUIN
Le 1er point, pour ce qui me concerne (et c'est lié) à mon PC, l'import PQ est beaucoup plus lent qu'avec la solution postée par @jm.andryszak
Le second point, c'est que son code VBA sera idéal pour mes lectures de code au coin du feu, les soirs d'hiver.

Pour la marée du jour, la requête de Jeannette affiche bien la marée du jour, non ?

Par contre quand je fais cet essai, la ligne de la marée du jour est zappée
Je ne comprends pas pourquoi pour le moment
PowerQuery:
let
    Source = Web.Page(Web.Contents("https://horaire-maree.fr/maree/LORIENT/")),
    Data = Source{1}[Data],
    #"Premières lignes supprimées" = Table.Skip(Data,2),
    #"Valeur remplacée" = Table.ReplaceValue(#"Premières lignes supprimées","Demain ","",Replacer.ReplaceText,{"Date"})
in
    #"Valeur remplacée"

EDITION: Je parlais du code M de @Jeannette présent dans le message#52
Je viens juste de voir la nouvelle proposition de @Jeannette
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Pour la marée du jour, la requête de Jeannette affiche bien la marée du jour, non ?

oui je l'ai bien, j'ai pas compris la question.

Par contre quand je fais cet essai, la ligne de la marée du jour est zappée

moi je l'ai, le tableau est complet comme elle là envoyée.

Capture d’écran 2024-08-05 180652.jpg


Moi ça me convient bien, le seul souci que j'ai maintenant c'est l'intégration dans l'userform, je sais pas ou j'ai cou.....

VB:
Sub Mareee()

    a = Year(Worksheets("Calendrier").Range("B1"))
    m = Month(Worksheets("Calendrier").Range("B1"))
    j = ActiveCell.Value

    With Worksheets("Marees")

        For I = 2 To 12

            If .Cells(I, 1) = (j) & "/" & (m) & "/" & (a) Then
               
                Forme.Label29 = .Cells(I, 3).Value
                Forme.Label30 = .Cells(I, 4).Value
                Forme.Label31 = .Cells(I, 2).Value
                Forme.Label32 = .Cells(I, 6).Value
                Forme.Label33 = .Cells(I, 7).Value
                Forme.Label34 = .Cells(I, 5).Value
               
            End If

        Next I

    End With

End Sub

Est ce parce que c'est un tableau ??
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@Nicolas JACQUIN
En creusant un peu, j'ai l'impression que le site horaires-marées n'est pas des plus fiables
(comme l'avait signalé précedemment @ALS35 dans ce message)
maree2.png

Je parlais du code M que j'ai posté dans le message#85
Si tu le testes sur un classeur vierge, tu verras que la ligne du 5 aout ne sera charger dans Excel alors qu'elle apparait dans l'éditeur PQ

Dans PQ
JourPQ.PNG
Dans Excel
excel.PNG

@Jeannette
Je ne comprends pas d'où viennent ces données qui n'apparaissent pas sur le site web
(qui normalement concerne le 5 aout 2024)
maree1.png
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Re

@Nicolas JACQUIN
En creusant un peu, j'ai l'impression que le site horaires-marées n'est pas des plus fiables
(comme l'avait signalé précedemment @ALS35 dans ce message)
Regarde la pièce jointe 1201519

Je parlais du code M que j'ai posté dans le message#85
Si tu le testes sur un classeur vierge, tu verras que la ligne du 5 aout ne sera charger dans Excel alors qu'elle apparait dans l'éditeur PQ

@Jeannette
Je ne comprends pas d'où viennent ces données qui n'apparaissent pas sur le site web
(qui normalement concerne le 5 aout 2024)
Regarde la pièce jointe 1201520

Tu m'avais repris quand j'avais essayé avec ce site

Capture d’écran 2024-08-05 183137.jpg
 

Staple1600

XLDnaute Barbatruc
Re

@Nicolas JACQUIN
Me basant sur tes messages parlant d'erreur, j'étais resté sur l'URL utilisé par @JHA
Avec marée.info, je n'ai pas d'erreur
PowerQuery:
let
    Source = Web.Page(Web.Contents("https://maree.info/95")),
    Data = Source{1}[Data],
    #"Type modifié" = Table.TransformColumnTypes(Data,{{"Date", type text}, {"Heure", type text}, {"Hauteur", type text}, {"Coeff.", type text}}),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Type modifié", "Heure", Splitter.SplitTextByDelimiter("#(cr)", QuoteStyle.Csv), {"Heure.1", "Heure.2", "Heure.3", "Heure.4"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"Heure.1", type text}, {"Heure.2", type text}, {"Heure.3", type text}, {"Heure.4", type text}}),
    #"Fractionner la colonne par délimiteur1" = Table.SplitColumn(#"Type modifié1", "Hauteur", Splitter.SplitTextByDelimiter("#(cr)", QuoteStyle.Csv), {"Hauteur.1", "Hauteur.2", "Hauteur.3", "Hauteur.4"}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur1",{{"Hauteur.1", type text}, {"Hauteur.2", type text}, {"Hauteur.3", type text}, {"Hauteur.4", type text}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Type modifié2",{"Date", "Heure.1", "Hauteur.1", "Heure.2", "Hauteur.2", "Heure.3", "Hauteur.3", "Heure.4", "Hauteur.4", "Coeff."}),
    #"Fractionner la colonne par délimiteur2" = Table.SplitColumn(#"Colonnes permutées", "Coeff.", Splitter.SplitTextByDelimiter("#(cr)", QuoteStyle.Csv), {"Coeff..1", "Coeff..2", "Coeff..3"}),
    #"Type modifié3" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur2",{{"Coeff..1", Int64.Type}, {"Coeff..2", type text}, {"Coeff..3", Int64.Type}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié3",{"Coeff..2"})
in
    #"Colonnes supprimées"

@Jeannette
Merci pour les précisions
Donc ici j'ai la marée du jour
PowerQuery:
let
    Source = Web.Page(Web.Contents("https://horaire-maree.fr/maree/LORIENT/")),
    Data0 = Source{0}[Data],
    #"Type modifié" = Table.TransformColumnTypes(Data0,{{"Matin Coeff.", type text}, {"Matin Basse mer", type text}, {"Matin Pleine mer", type text}, {"Après midi Coeff.", type text}, {"Après midi Basse mer", type text}, {"Après midi Pleine mer", type text}}),
    #"Premières lignes supprimées" = Table.Skip(#"Type modifié",2),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Premières lignes supprimées", "DATE", each DateTime.Date(DateTime.FixedLocalNow())),
    #"Colonnes permutées" = Table.ReorderColumns(#"Personnalisée ajoutée",{"DATE", "Matin Coeff.", "Matin Basse mer", "Matin Pleine mer", "Après midi Coeff.", "Après midi Basse mer", "Après midi Pleine mer"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes permutées",{{"DATE", type date}})
in
    #"Type modifié1"

Idem: code M généré par l'assistant PQ (donc optimisable mais là c'est l'heure de ma soupe ;) )
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 588
Messages
2 110 987
Membres
111 000
dernier inscrit
Mouhamedw