XL 2016 fériés 2000 à 2100

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 !

eastwick

XLDnaute Accro
Bonjour à toutes et tous,
Existe-t-il sur le forum un fichier répertoriant tous les jours fériés allant du 01/01/2000 au 31/12/2100 ?
Attention je ne demande pas la méthode pour calculer ceux dont la date n'est pas fixe (fériés religieux)
Je vous remercie.
 
bonjour
VB:
'fonction férié
Function férié(d As Date)
    Dim tbl(1 To 20) As Date, I&, tbl2(1 To 20)
    tbl(1) = DateSerial(Year(d), 1, 1)
    tbl(2) = CDate(((Round(DateSerial(Year(d), 4, (234 - 11 * (Year(d) Mod 19)) Mod 30) / 7, 0) * 7) - 6))
    tbl(3) = tbl(2) + 39 'L'Ascension est une fête chrétienne fixée 40 jours après le dimanche de Pâques. Elle symbolise la montée de Jésus vers Dieu
    tbl(4) = tbl(2) + 50 'Les apôtres ont alors dit : « L'Esprit du Seigneur est sur nous ». Elle clôt le temps pascal de 50 jours. La Pentecôte célèbre à la fois le commencement de l'Église, sa fondation, et l'émergence des premières communautés chrétiennes, au Ier siècle.
    tbl(5) = DateSerial(Application.Max(Year(d), 1919), 5, 1) 'Le 23 avril 1919, le Sénat français ratifie la journée de huit heures et fait du 1er mai suivant, à titre exceptionnel, une journée chômée. Depuis, le 1er mai est resté le jour international des revendications ouvrières, donnant lieu à des défilés de travailleurs
    tbl(6) = DateSerial(Application.Max(Year(d), 1945), 5, 8) 'Victoire des forces alliées sur l'Allemagne nazie et fin de la Seconde Guerre mondiale en Europe, le 8 mai 1945 marque une date importante. Pour le 80e anniversaire de la capitulation nazie
    tbl(7) = DateSerial(Application.Max(Year(d), 1919), 11, 11) '11 novembre - Cérémonie commémorative de l'Armistice du 11 novembre 1918, de la Victoire et de la Paix et d'hommage à tous les Morts pour la France
    tbl(8) = DateSerial(Year(d), 12, 25) 'au 4eme siecle les chrétiens on fixer la date de naissence de jesus christ au 25 décembre ,l'empereur Theodose l'a officialisé pour remplacer les fêtes païennes
    tbl(9) = tbl(2) + 1
    tbl(10) = DateSerial(Year(d), 7, 14) 'Le 14 juillet, pour sa double valeur symbolique, a finalement été privilégié. La prise de la Bastille en 1789 s'impose dans l'imaginaire collectif comme la victoire du peuple sur l'arbitraire royal, un événement adouci par la fête de 1790 et sa dimension fédératrice autour d'un événement commun
    'ajouter des jours si besoins ici pour les date
    
    tbl2(1) = "Jour de l'an"
    tbl2(2) = "Pâques"
    tbl2(3) = "Ascension"
    tbl2(4) = "Pentecôte"
    tbl2(5) = "Fête du travail"
    tbl2(6) = "fete de la victioire "
    tbl2(7) = "Armistice"
    tbl2(8) = "Noel"
    tbl2(9) = "Lundi de Pâques"
    tbl2(10) = "Fête Nationale "
    'ajouter des titres de jour férié si besoins ici qui doivent correspondre a la date dans le tbl  au même index
    'test
    For I = 1 To UBound(tbl)
        If (d) = (tbl(I)) Then férié = tbl2(I): Exit For
    Next
End Function



Sub liste_Onlyférié()
    'ici on a que les jours férié de lister dans la feuille
    Dim d As Date, lig As Long
    ActiveSheet.UsedRange.ClearContents
    Application.ScreenUpdating = False
    d = CDate("01/01/2000")
    Do While d < CDate("31/12/2100")
        d = d + 1
        If férié(d) <> "" Then
            lig = lig + 1
            Cells(lig, 1) = d
            Cells(lig, 2) = férié(d)
        End If
    Loop
    Application.ScreenUpdating = True
End Sub


demo3.gif
 
@merci @kiki29
c'est au choix

VB:
'méthode Meeus/Jones/Butcher(dites la plus fiable)
Sub testMJB()
MsgBox PaquesMeeusJonebutcher(2025)
End Sub
Function PaquesMeeusJonebutcher(A As Integer) As Date
    PaquesMeeusJonebutcher = DateSerial(A, ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) \ 31, (((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) _
                                        Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) Mod 31) + 1)
End Function
'----------------------------------------------------------------------------------'
'méthode SpencerJones
Sub testSJ()
MsgBox PaquesSpencerJones(2025)
End Sub
Function PaquesSpencerJones(A As Integer) As Date
    PaquesSpencerJones = DateSerial(A, ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) \ 31, (((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - _
                                    ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) Mod 31) + 1)
End Function
'----------------------------------------------------------------------------------'
'méthode Gauss simplifié
Sub testG()
MsgBox PaquesGauss(2025)
End Sub
Function PaquesGauss(A As Integer) As Date
    PaquesGauss = CDate(((Round(DateSerial(A, 4, (234 - 11 * (A Mod 19)) Mod 30) / 7, 0) * 7) - 6))
End Function
'----------------------------------------------------------------------------------'
 
re
listing des date ou gauss diverge des deux autres méthodes
resultat console
Comparaison des méthodes MeeusJonesSpencer vs Spencer-Jones (et ma PaquesGausssimplifié si elle est detectée détectée)
Plage : 2000 -> 2100
------------------------------------------------------------
Année MeeusJSP SpencerJones Gauss
------------------------------------------------------------
2000 26/03/2000 26/03/2000 23/04/2000
2002 07/04/2002 07/04/2002 31/03/2002
2003 23/03/2003 23/03/2003 20/04/2003
2005 03/04/2005 03/04/2005 27/03/2005
2006 23/04/2006 23/04/2006 16/04/2006
2008 30/03/2008 30/03/2008 23/03/2008
2009 19/04/2009 19/04/2009 12/04/2009
2010 11/04/2010 11/04/2010 04/04/2010
2011 27/03/2011 27/03/2011 24/04/2011
2012 15/04/2012 15/04/2012 08/04/2012
2013 07/04/2013 07/04/2013 31/03/2013
2015 12/04/2015 12/04/2015 05/04/2015
2016 03/04/2016 03/04/2016 27/03/2016
2017 23/04/2017 23/04/2017 16/04/2017
2018 08/04/2018 08/04/2018 01/04/2018
2019 31/03/2019 31/03/2019 21/04/2019
2020 19/04/2020 19/04/2020 12/04/2020
2022 27/03/2022 27/03/2022 17/04/2022
2023 16/04/2023 16/04/2023 09/04/2023
2026 12/04/2026 12/04/2026 05/04/2026
2029 08/04/2029 08/04/2029 01/04/2029
2030 31/03/2030 31/03/2030 21/04/2030
2032 04/04/2032 04/04/2032 28/03/2032
2033 24/04/2033 24/04/2033 17/04/2033
2035 01/04/2035 01/04/2035 25/03/2035
2036 20/04/2036 20/04/2036 13/04/2036
2037 12/04/2037 12/04/2037 05/04/2037
2038 28/03/2038 28/03/2038 25/04/2038
2039 17/04/2039 17/04/2039 10/04/2039
2040 08/04/2040 08/04/2040 01/04/2040
2041 24/03/2041 24/03/2041 21/04/2041
2042 13/04/2042 13/04/2042 06/04/2042
2043 05/04/2043 05/04/2043 29/03/2043
2044 24/04/2044 24/04/2044 17/04/2044
2046 01/04/2046 01/04/2046 25/03/2046
2047 21/04/2047 21/04/2047 14/04/2047
2049 28/03/2049 28/03/2049 25/04/2049
2050 17/04/2050 17/04/2050 10/04/2050
2053 13/04/2053 13/04/2053 06/04/2053
2056 09/04/2056 09/04/2056 02/04/2056
2057 01/04/2057 01/04/2057 22/04/2057
2059 06/04/2059 06/04/2059 30/03/2059
2060 28/03/2060 28/03/2060 18/04/2060
2061 17/04/2061 17/04/2061 10/04/2061
2062 02/04/2062 02/04/2062 26/03/2062
2063 22/04/2063 22/04/2063 15/04/2063
2064 13/04/2064 13/04/2064 06/04/2064
2066 18/04/2066 18/04/2066 11/04/2066
2067 10/04/2067 10/04/2067 03/04/2067
2068 25/03/2068 25/03/2068 22/04/2068
2070 06/04/2070 06/04/2070 30/03/2070
2073 02/04/2073 02/04/2073 26/03/2073
2074 22/04/2074 22/04/2074 15/04/2074
2076 29/03/2076 29/03/2076 26/04/2076
2077 18/04/2077 18/04/2077 11/04/2077
2079 26/03/2079 26/03/2079 23/04/2079
2080 14/04/2080 14/04/2080 07/04/2080
2081 06/04/2081 06/04/2081 30/03/2081
2083 11/04/2083 11/04/2083 04/04/2083
2084 02/04/2084 02/04/2084 26/03/2084
2085 22/04/2085 22/04/2085 15/04/2085
2086 07/04/2086 07/04/2086 31/03/2086
2087 30/03/2087 30/03/2087 20/04/2087
2088 18/04/2088 18/04/2088 11/04/2088
2090 23/04/2090 23/04/2090 16/04/2090
2091 15/04/2091 15/04/2091 08/04/2091
2093 19/04/2093 19/04/2093 12/04/2093
2094 11/04/2094 11/04/2094 04/04/2094
2095 27/03/2095 27/03/2095 24/04/2095
2097 07/04/2097 07/04/2097 31/03/2097
2098 23/03/2098 23/03/2098 20/04/2098
2100 04/04/2100 04/04/2100 28/03/2100
------------------------------------------------------------
Fin comparaison.
franchement c'est affolant
 
du coup je met la méthode meussJnesspencer dans ma fonction férié
VB:
'fonction férié
Function férié(d As Date)
    Dim tbl(1 To 20) As Date, I&, tbl2(1 To 20), A
    tbl(1) = DateSerial(Year(d), 1, 1)
    A = Year(d)
    tbl(2) = DateSerial(A, ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) \ 31, (((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) _
                                        Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) Mod 31) + 1)
 
 tbl(3) = tbl(2) + 39 'L'Ascension est une fête chrétienne fixée 40 jours après le dimanche de Pâques. Elle symbolise la montée de Jésus vers Dieu
    tbl(4) = tbl(2) + 50 'Les apôtres ont alors dit : « L'Esprit du Seigneur est sur nous ». Elle clôt le temps pascal de 50 jours. La Pentecôte célèbre à la fois le commencement de l'Église, sa fondation, et l'émergence des premières communautés chrétiennes, au Ier siècle.
    tbl(5) = DateSerial(Application.Max(Year(d), 1919), 5, 1) 'Le 23 avril 1919, le Sénat français ratifie la journée de huit heures et fait du 1er mai suivant, à titre exceptionnel, une journée chômée. Depuis, le 1er mai est resté le jour international des revendications ouvrières, donnant lieu à des défilés de travailleurs
    tbl(6) = DateSerial(Application.Max(Year(d), 1945), 5, 8) 'Victoire des forces alliées sur l'Allemagne nazie et fin de la Seconde Guerre mondiale en Europe, le 8 mai 1945 marque une date importante. Pour le 80e anniversaire de la capitulation nazie
    tbl(7) = DateSerial(Application.Max(Year(d), 1919), 11, 11) '11 novembre - Cérémonie commémorative de l'Armistice du 11 novembre 1918, de la Victoire et de la Paix et d'hommage à tous les Morts pour la France
    tbl(8) = DateSerial(Year(d), 12, 25) 'au 4eme siecle les chrétiens on fixer la date de naissence de jesus christ au 25 décembre ,l'empereur Theodose l'a officialisé pour remplacer les fêtes païennes
    tbl(9) = tbl(2) + 1
    tbl(10) = DateSerial(Year(d), 7, 14) 'Le 14 juillet, pour sa double valeur symbolique, a finalement été privilégié. La prise de la Bastille en 1789 s'impose dans l'imaginaire collectif comme la victoire du peuple sur l'arbitraire royal, un événement adouci par la fête de 1790 et sa dimension fédératrice autour d'un événement commun
    'ajouter des jours si besoins ici pour les dates
    
    tbl2(1) = "Jour de l'an"
    tbl2(2) = "Pâques"
    tbl2(3) = "Ascension"
    tbl2(4) = "Pentecôte"
    tbl2(5) = "Fête du travail"
    tbl2(6) = "fete de la victioire "
    tbl2(7) = "Armistice"
    tbl2(8) = "Noel"
    tbl2(9) = "Lundi de Pâques"
    tbl2(10) = "Fête Nationale "
    'ajouter des titres de jour férié si besoins ici qui doivent correspondre a la date dans le tbl  au même index
    'test
    For I = 1 To UBound(tbl)
        If (d) = (tbl(I)) Then férié = tbl2(I): Exit For
    Next
End Function



Sub liste_Onlyférié()
    'ici on a que les jours férié de lister dans la feuille
    Dim d As Date, lig As Long
    ActiveSheet.UsedRange.ClearContents
    Application.ScreenUpdating = False
    d = CDate("01/01/2000")
    Do While d < CDate("31/12/2100")
        d = d + 1
        If férié(d) <> "" Then
            lig = lig + 1
            Cells(lig, 1) = d
            Cells(lig, 2) = férié(d)
        End If
    Loop
    Application.ScreenUpdating = True
End Sub
 
Bonjour Robert
FAINEANT!!!!!! 🤣

et si on accélérait un peu le jambon

au début j'ai remis les tests date dans l'ordre pour sortir quand la date etait plus grande mais ca ne fonctionnait pas jusqu'en 2100
en effet le lundi de pentecôte (pâques+50) peut être en avril , mai ou juin
Donc
la fonction passe désormais par un select case
et surtout pâques n'est recalculé que si on change d'année par la variable static "A" qui est alimentée par year(d)
ah ben du coup ca va plus vite
j'ai même ajouté une fantaisie
en effet la fonction férié peut renvoyer True ou la dénomination(raison) du jour férié par l'argument ReturnMode en optional( 1 ou 0)
comme on est dans un selectcase de type = on est pas obligé de mettre les dates dans l'ordre pour les tests
on peut donc ajouter des dates à la suite en fonction du besoins (congés,anniversaire,rotation(2/3/8),etc.....)

VB:
'fonction férié de patricktoulon
Function férié(d As Date, Optional ReturnMode As Long = 1) As Variant
    Dim X As Boolean
    Static A&: Static paques As Date
    If A <> Year(d) Then
        A = Year(d)
        paques = DateSerial(A, ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) \ 31, (((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30 + (32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) _
                            Mod 4)) Mod 7 - 7 * (((A Mod 19 + 11 * ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) + 22 * ((32 + 2 * ((A \ 100) Mod 4) + 2 * ((A Mod 100) \ 4) - ((19 * (A Mod 19) + (A \ 100) - (A \ 100) \ 4 - ((A \ 100 + 8) \ 25) + 1 \ 3 + 15) Mod 30) - ((A Mod 100) Mod 4)) Mod 7)) \ 451)) + 114) Mod 31) + 1)
    End If
   
    Select Case d
        Case DateSerial(Year(d), 1, 1): férié = "Jour de l'an": X = True
        Case paques: férié = "Pâques": X = True
        Case paques + 1: férié = "lundi de Paques": X = True
        Case paques + 39: férié = "Ascension": X = True 'L'Ascension est une fête chrétienne fixée 40 jours après le dimanche de Pâques. Elle symbolise la montée de Jésus vers Dieu
        Case paques + 50 = férié = "Lundi de Pentecôte": X = True 'Les apôtres ont alors dit : « L'Esprit du Seigneur est sur nous ». Elle clôt le temps pascal de 50 jours. La Pentecôte célèbre à la fois le commencement de l'Église, sa fondation, et l'émergence des premières communautés chrétiennes, au Ier siècle.
        Case DateSerial(Application.Max(Year(d), 1919), 5, 1): férié = "Fête du travail": X = True 'Le 23 avril 1919, le Sénat français ratifie la journée de huit heures et fait du 1er mai suivant, à titre exceptionnel, une journée chômée. Depuis, le 1er mai est resté le jour international des revendications ouvrières, donnant lieu à des défilés de travailleurs
        Case DateSerial(Application.Max(Year(d), 1945), 5, 8): férié = "fete de la victioire ": X = True 'Victoire des forces alliées sur l'Allemagne nazie et fin de la Seconde Guerre mondiale en Europe, le 8 mai 1945 marque une date importante. Pour le 80e anniversaire de la capitulation nazie
        Case DateSerial(Year(d), 7, 14): férié = "Fête Nationale ": X = True 'Le 14 juillet, pour sa double valeur symbolique, a finalement été privilégié. La prise de la Bastille en 1789 s'impose dans l'imaginaire collectif comme la victoire du peuple sur l'arbitraire royal, un événement adouci par la fête de 1790 et sa dimension fédératrice autour d'un événement commun
        Case DateSerial(Application.Max(Year(d), 1919), 11, 11): férié = "Armistice": X = True '11 novembre - Cérémonie commémorative de l'Armistice du 11 novembre 1918, de la Victoire et de la Paix et d'hommage à tous les Morts pour la France
        Case DateSerial(Year(d), 12, 25): férié = "Noël": X = True 'au 4eme siecle les chrétiens on fixer la date de naissence de jesus christ au 25 décembre ,l'empereur Theodose l'a officialisé pour remplacer les fêtes païennes
            'ajouter des jours si besoins ici pour les dates
    End Select
   
    If ReturnMode = 0 Then férié = X
End Function

End Function

Sub liste_Onlyférié()
    'ici on a que les jours férié de lister dans la feuille
    Dim d As Date, lig As Long
    ActiveSheet.UsedRange.ClearContents
    Application.ScreenUpdating = False
    d = CDate("01/01/2000")
    Do While d < CDate("31/12/2100")
        d = d + 1
        If férié(d) <> "" Then
            lig = lig + 1
            Cells(lig, 1) = d
            Cells(lig, 2) = férié(d)
        End If
    Loop
    Application.ScreenUpdating = True
End Sub

le petit exemple qui va bien pour tester en mode return Boolean
VB:
Sub test()
MsgBox férié(CDate("11/11/2025"), 0)
MsgBox férié(CDate("12/11/2025"), 0)
End Sub

Patrick
edit:
correctif sur paques je le met en static aussi sinon ce n'etait pas la peine il etait recalculée a chaque fois
 
Dernière édition:
franchement c'est affolant
ce qui est affolant c'est que toutes tes dates de Pâques données pour MeeusJSP et SpencerJones sont fausses.
tu as dû faire une erreur quelque part !
Pâques 2026, c'est le 05 avril comme indiqué Gauss
et en 2023, à moins de refaire l'histoire, le dimanche de Pâques était bien le 09 avril et non le 16
l'algorithme de Gauss est, lui, faux sur 2049 et 2076

1757684220615.png
 
Dernière édition:
Liste des dimanches de Pâques par l'observatoire royal de Belgique
https://www.astro.oma.be/fr/informations/renseignements/quand-tombe-paques/
https://www.astro.oma.be/fr/informa...ombe-paques/les-dates-de-paques-de-1583-3000/
l'algorithme de Gauss est faux sur 2049 et 2076, ce qui m'a fait modifier ma fonction TJF en 4.3 avec un nouvel algo (je ne me souviens plus lequel).
j'avais vérifié toutes les dates des dimanches de Pâques jusqu'en 2099 (avec de mémoire les listes du Vatican qui n'allaient que jusqu'en 2099)
 
Dernière édition:
Hello,
Sinon, @ROGER2327 nous avait gâté, dans ce fil
Bonne lecture
Il est vraiment bon cet algo, dates du dimanche de Pâques vérifiées et correctes de l'an 1900 à l'an 3000 👍 👍 👍
ça m'a l'air tout bon aussi de 1583 à 1899 mais un peu plus long à tester, Excel oblige
[édition: tout bon de 1583 (début du calendrier Grégorien) à 3000, c'est parfait, j'adopte même, si en l'an 3000, ça fera un moment que je mangerai les pissenlits par la racine]
 
Dernière édition:
Il est vraiment bon cet algo, dates du dimanche de Pâques vérifiées et correctes de l'an 1900 à l'an 3000 👍 👍 👍
ça m'a l'air tout bon aussi de 1583 à 1899 mais un peu plus long à tester, Excel oblige
[édition: tout bon de 1583 (début du calendrier Grégorien) à 3000, c'est parfait, j'adopte même, si en l'an 3000, ça fera un moment que je mangerai les pissenlits par la racine]
Hi,
Je précise que je n'avais fait qu'épingler ce post...
Bonne soirée (quand j'aurai le temps, je vais regarder si cet algo a été traduit en PQ...)
 
- 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

Discussions similaires

Retour