Function EstJourFerie(dateVerif As Date) As Boolean
    ' Fonction pour vérifier si une date est un jour férié en France
    ' Paramètre : dateVerif - la date à vérifier
    ' Retour : True si c'est un jour férié, False sinon
 
    Dim annee As Integer
    Dim paques As Date
    Dim lundiPaques As Date
    Dim ascension As Date
    Dim lundiPentecote As Date
 
    annee = Year(dateVerif)
 
    ' Calcul de la date de Pâques (algorithme de Gauss)
    paques = CalculerPaques(annee)
    lundiPaques = paques + 1
    ascension = paques + 39
    lundiPentecote = paques + 50
 
    ' Vérification des jours fériés fixes
    Select Case Month(dateVerif) & "-" & Day(dateVerif)
        Case "1-1"      ' Jour de l'An
            EstJourFerie = True
        Case "5-1"      ' Fête du Travail
            EstJourFerie = True
        Case "5-8"      ' Fête de la Victoire
            EstJourFerie = True
        Case "7-14"     ' Fête Nationale
            EstJourFerie = True
        Case "8-15"     ' Assomption
            EstJourFerie = True
        Case "11-1"     ' Toussaint
            EstJourFerie = True
        Case "11-11"    ' Armistice
            EstJourFerie = True
        Case "12-25"    ' Noël
            EstJourFerie = True
        Case Else
            ' Vérification des jours fériés mobiles (dépendant de Pâques)
            If dateVerif = lundiPaques Or _
               dateVerif = ascension Or _
               dateVerif = lundiPentecote Then
                EstJourFerie = True
            Else
                EstJourFerie = False
            End If
    End Select
End Function
Function CalculerPaques(annee As Integer) As Date
    ' Calcul de la date de Pâques selon l'algorithme de Gauss
    Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
    Dim f As Integer, g As Integer, h As Integer, i As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer, p As Integer
 
    a = annee Mod 19
    b = Int(annee / 100)
    c = annee Mod 100
    d = Int(b / 4)
    e = b Mod 4
    f = Int((b + 8) / 25)
    g = Int((b - f + 1) / 3)
    h = (19 * a + b - d - g + 15) Mod 30
    i = Int(c / 4)
    k = c Mod 4
    l = (32 + 2 * e + 2 * i - h - k) Mod 7
    m = Int((a + 11 * h + 22 * l) / 451)
    n = Int((h + l - 7 * m + 114) / 31)
    p = (h + l - 7 * m + 114) Mod 31
 
    CalculerPaques = DateSerial(annee, n, p + 1)
End Function
' Fonction bonus : obtenir la liste de tous les jours fériés d'une année
Function ListeJoursFeries(annee As Integer) As String
    ' Retourne la liste des jours fériés pour une année donnée
    Dim paques As Date
    Dim liste As String
 
    paques = CalculerPaques(annee)
 
    liste = "Jours fériés pour l'année " & annee & ":" & vbCrLf
    liste = liste & "• 1er janvier : Jour de l'An" & vbCrLf
    liste = liste & "• " & Format(paques + 1, "dd/mm") & " : Lundi de Pâques" & vbCrLf
    liste = liste & "• 1er mai : Fête du Travail" & vbCrLf
    liste = liste & "• 8 mai : Fête de la Victoire" & vbCrLf
    liste = liste & "• " & Format(paques + 39, "dd/mm") & " : Ascension" & vbCrLf
    liste = liste & "• " & Format(paques + 50, "dd/mm") & " : Lundi de Pentecôte" & vbCrLf
    liste = liste & "• 14 juillet : Fête Nationale" & vbCrLf
    liste = liste & "• 15 août : Assomption" & vbCrLf
    liste = liste & "• 1er novembre : Toussaint" & vbCrLf
    liste = liste & "• 11 novembre : Armistice" & vbCrLf
    liste = liste & "• 25 décembre : Noël" & vbCrLf
 
    ListeJoursFeries = liste
End Function
[Code]