'fonction férié
'méthode Meeus/Jones/Butcher(dites la plus fiable)
Function PaquesMJSPB(Y As Long) As Date
Dim a&, b&, c&, d&, e&, f&, g&, h&, i&, k&, L&, m&, Mx, Dx
a = Y Mod 19: b = Y \ 100: c = Y Mod 100: d = b \ 4: e = b Mod 4: f = (b + 8) \ 25: g = (b - f + 1) \ 3
h = (19 * a + b - d - g + 15) Mod 30: i = c \ 4: k = c Mod 4: L = (32 + 2 * e + 2 * i - h - k) Mod 7
m = (a + 11 * h + 22 * L) \ 451: Mx = (h + L - 7 * m + 114) \ 31: Dx = ((h + L - 7 * m + 114) Mod 31) + 1
PaquesMJSPB = DateSerial(Y, Mx, Dx)
End Function
'fonction férié
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 = PaquesMJSPB(a)
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
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
Sub test()
MsgBox férié(CDate("11/11/2025"), 0)
MsgBox férié(CDate("12/11/2025"), 0)
End Sub