Jours fériés et dimanche

Contenu du snippet

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 

Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

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.

Du même auteur (Yogly)