1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Function EstFerie(ByVal QuelleDate As Date) As Boolean
'Vérifie si la date correspond à un jour férié
Dim AnneeDate As Integer
Dim JoursFeries(1 To 11) As Date
AnneeDate = Year(QuelleDate)
JoursFeries(1) = DateSerial(AnneeDate, 1, 1) '1° janvier
JoursFeries(2) = DateSerial(AnneeDate, 5, 1) '1° mai
JoursFeries(3) = DateSerial(AnneeDate, 5, 8) '8 mai
JoursFeries(4) = DateSerial(AnneeDate, 7, 14) '14 juillet
JoursFeries(5) = DateSerial(AnneeDate, 8, 15) '15 août
JoursFeries(6) = DateSerial(AnneeDate, 11, 1) '1° novembre
JoursFeries(7) = DateSerial(AnneeDate, 11, 11) '11 novembre
JoursFeries(8) = DateSerial(AnneeDate, 12, 25) 'Noël
JoursFeries(9) = fLundiPaques(AnneeDate)
JoursFeries(10) = JoursFeries(9) + 38 ' Ascension = lundi de Pâques + 38
JoursFeries(11) = JoursFeries(9) + 49 ' Lundi Pentecôte = lundi de Pâques + 49
For i = 1 To 11
If QuelleDate = JoursFeries(i) Then
EstFerie = True
Exit For
End If
Next
End Function
Private Function fLundiPaques(ByVal Iyear As Integer) As Date
'Adapté de plusieurs scripts...
Dim L(6) As Long, Lj As Long, Lm As Long
L(1) = Iyear Mod 19: L(2) = Iyear Mod 4: L(3) = Iyear Mod 7
L(4) = (19 * L(1) + 24) Mod 30
L(5) = ((2 * L(2)) + (4 * L(3)) + (6 * L(4)) + 5) Mod 7
L(6) = 22 + L(4) + L(5)
If L(6) > 31 Then
Lj = L(6) - 31
Lm = 4
Else
Lj = L(6)
Lm = 3
End If
' Lundi de Pâques = Paques + 1 jour
fLundiPaques = DateAdd("d", 1, (Lj & "/" & Lm & "/" & Iyear))
End Function |
Partager