Public Function IsHoliday(ByVal vdInput As Date) As Boolean Dim nDelta As Long If Weekday(vdInput, vbMonday) >= 6 Then IsHoliday = True '# Ici, on considère que Samedi et Dimanche sont des jours non ouvrés... ElseIf InStr(1, "01/01 01/05 08/05 14/07 15/08 01/11 11/11 25/12", Format$(vdInput, "DD\/MM")) Then IsHoliday = True Else nDelta = DateDiff("D", Easter(Year(vdInput)), vdInput) IsHoliday = (nDelta = 0 Or _ nDelta = 1 Or _ nDelta = 39 Or _ nDelta = 49 Or _ nDelta = 50) End If End Function Public Property Get Easter(ByVal vnYear As Integer) As Date Dim nE As Integer Dim nH As Integer Dim nK As Integer Dim nP As Integer Dim nQ As Integer Dim nI As Integer Dim nJ As Integer Dim nGolden As Integer Dim nCentury As Integer Dim nCenturyQ As Integer nGolden = vnYear Mod 19 nCentury = vnYear \ 100 nCenturyQ = nCentury \ 4 nE = (8 * nCentury + 13) \ 25 nH = (19 * nGolden + nCentury - nCenturyQ - nE + 15) Mod 30 nK = nH \ 28 nP = 29 \ (nH + 1) nQ = (21 - nGolden) \ 11 nI = (nK * nP * nQ - 1) * nK + nH nJ = ((vnYear \ 4 + vnYear) + nI + 2 + nCenturyQ - nCentury) Mod 7 nJ = 28 + nI - nJ If nJ <= 31 Then Easter = DateSerial(vnYear, 3, nJ) Else Easter = DateSerial(vnYear, 4, nJ - 31) End If End Property
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.