Jours fériés y compris mobiles

Contenu du snippet

Permet d'obtenir les jours fériés y compris les mobiles
Paques, Ascension

Source / Exemple :


Function JourFerie(madate As Date)
' indique si la date est un jour férié
Dim p_annee As Long
p_annee = Year(madate)
' ajouter paque pentecote et asenscion
If Month(madate) = 1 And Day(madate) = 1 Or _
   Month(madate) = 5 And Day(madate) = 1 Or _
   Month(madate) = 5 And Day(madate) = 8 Or _
   Month(madate) = 7 And Day(madate) = 14 Or _
   Month(madate) = 8 And Day(madate) = 15 Or _
   Month(madate) = 11 And Day(madate) = 1 Or _
   Month(madate) = 11 And Day(madate) = 11 Or _
   Month(madate) = 12 And Day(madate) = 25 Or cdow(madate) = "dimanche" Or _
   madate = LundiPaques(p_annee) Or madate = LundiPaques(p_annee) + 38 Or _
   madate = LundiPaques(p_annee) + 49 Then
   JourFerie = True
Else
   JourFerie = False
End If
   
End Function

Function LundiPaques(p_annee As Long) As Date
' retourne le lundi de paques d'une année
Dim l_lundi As Date, l_1 As Long, l_2 As Long, _
    l_3 As Long, l_4 As Long, l_5 As Long, l_6 As Long _
    , l_j As Long, l_m, l_a
l_1 = Modulo(p_annee, 19)
l_2 = Modulo(p_annee, 4)
l_3 = Modulo(p_annee, 7)
l_4 = Modulo((19 * l_1 + 24), 30)
l_5 = Modulo(((2 * l_2) + (4 * l_3) + (6 * l_4) + 5), 7)
l_6 = 22 + l_4 + l_5
If l_6 > 31 Then
   l_j = l_6 - 31
   l_m = 4
Else
   l_j = l_6
   l_m = 3
End If
l_lundi = Ctod(Padl(Str(l_j), 2, "0") & "/" & Padl(Str(l_m), 2, "0") & "/" & p_annee)
LundiPaques = l_lundi + 1
End Function

Function Ascension(pannee As Long) As Date
 Ascension = LundiPaques(pannee) + 38
End Function
  
Function LundiPentecote(pannee As Long) As Date
   LundiPentecote = LundiPaques(pannee) + 49
End Function

Function Modulo(nombre As Long, diviseur As Long) As Long
' donne le reste d'une division sous une forme plus académique
    Modulo = nombre Mod diviseur
End Function

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.