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]