[VBA] Comment obtenir la liste des jours fériés pour une année N ?
Q&R publiée par MyDearFriend! le 26-08-2008 (10193 Lectures)
Voici deux fonctions personnalisées permettant d'obtenir la liste des jours fériés français pour une année N souhaitée.
La fonction principale ListeJoursFeries() recevra comme argument l'année choisie au format numérique et retournera un tableau variant à 2 dimensions de 13 lignes (pour les 13 jours fériés français) et 2 colonnes (pour la date et le libellé de chaque jour férié).
Les fêtes mobiles découlent de la date du dimanche de Pâques, elle-même déterminée grâce à la fonction DimPâques().
Pour lister les jours fériés de l'année 2008 sur la feuille active par exemple, il convient donc de lancer ce qui suit :
La fonction principale ListeJoursFeries() recevra comme argument l'année choisie au format numérique et retournera un tableau variant à 2 dimensions de 13 lignes (pour les 13 jours fériés français) et 2 colonnes (pour la date et le libellé de chaque jour férié).
Les fêtes mobiles découlent de la date du dimanche de Pâques, elle-même déterminée grâce à la fonction DimPâques().
DANS UN MODULE DE CODE STANDARDOption Explicit
Function ListeJoursFeries(An As Integer) As Variant
'myDearFriend! - www.mdf-xlpages.com
'(Tableau des jours fériés français pour l'année An)
Dim DF(1 To 13, 1 To 2) As Variant
Dim D As Date
Dim L As Byte
D = DimPaques(An)
For L = 1 To 13
DF(L, 1) = Choose(L, _
DateSerial(An, 1, 1), D, D + 1, DateSerial(An, 5, 1), _
DateSerial(An, 5, 8), D + 39, D + 49, D + 50, DateSerial(An, 7, 14), _
DateSerial(An, 8, 15), DateSerial(An, 11, 1), DateSerial(An, 11, 11), _
DateSerial(An, 12, 25))
DF(L, 2) = Choose(L, _
"Jour de l'An", "Dimanche de Pâques", "Lundi de Pâques", _
"Fête du Travail", "Armistice 1945", "Jeudi Ascension", _
"Dimanche de Pentecôte", "Lundi de Pentecôte", "Fête Nationale", _
"Assomption", "Toussaint", "Armistice 1918", _
"Noël")
Next L
ListeJoursFeries = DF
End Function
Private Function DimPaques(ByVal An As Integer) As Date
'myDearFriend! - www.mdf-xlpages.com
'(Calcul du dimanche de Pâques d'après un algorithme de Thomas O’Beirne)
Dim n As Integer, c As Integer, a As Byte, b As Byte
n = An - 1900
a = n Mod 19
b = (11 * a + 4 - ((a * 7 + 1) \ 19)) Mod 29
c = 25 - b - ((n - b + 31 + (n \ 4)) Mod 7)
DimPaques = DateAdd("d", c, DateSerial(An, 3, 31))
End Function
Pour lister les jours fériés de l'année 2008 sur la feuille active par exemple, il convient donc de lancer ce qui suit :
Sub Test()
'Pour lister les jours fériés de l'année 2008
ActiveSheet.Range("A1:B13").Value = ListeJoursFeries(2008)
End Sub
|