Salut
une fonction + une macro devraient résoudre ton problème.
Tu peux définir tes propres jour fériés ou rajouter toute date qui te serait utile. initialiser date_deb avec la date de début et date_fin avec la date de fin.
Il y a peut être plus simple
En espérant t'avoir aidé.
A+
Option Explicit
Function Jours_Feries(Date_Reference) As Boolean
Dim Annee_Reference As Integer, Dimanche_Paques As Date
Annee_Reference = Year(Date_Reference)
If Annee_Reference < 1900 Or Annee_Reference > 2078 Then
Jours_Feries = False
Else
If ((((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30)) + 5) Mod 7)) + 9 <= 0 Then Dimanche_Paques = DateSerial(Annee_Reference, 3, (22 + (((19 * (Annee_Reference Mod 19)) + 24) Mod 30)) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + 5)) Mod 7)) Else Dimanche_Paques = DateSerial(Annee_Reference, 4, ((((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + 5)) Mod 7))) - 9
Select Case Left(DateValue(Date_Reference), 5)
Case Is = "01/01"
Jours_Feries = True
Case Is = "01/05"
Jours_Feries = True
Case Is = "08/05"
Jours_Feries = True
Case Is = "14/07"
Jours_Feries = True
Case Is = "15/08"
Jours_Feries = True
Case Is = "01/11"
Jours_Feries = True
Case Is = "11/11"
Jours_Feries = True
Case Is = "25/12"
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 1, 5)
'lundi de paques
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 39, 5)
'jeudi de l'ascencion
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 50, 5)
'lundi de pentecote
Jours_Feries = True
Case Else
Jours_Feries = False
End Select
End If
End Function
Sub essai()
Dim Date_Deb As Date, Date_Fin As Date, Compteur As Integer, Compteur2 As Integer
Compteur2 = 0
Date_Deb = "01/01/2004"
Date_Fin = "31/12/2004"
For Compteur = 1 To (DateValue(Date_Fin) - DateValue(Date_Deb)) + 1
If Weekday(DateValue(Date_Deb) + (Compteur - 1)) = 7 Or Weekday(DateValue(Date_Deb) + (Compteur - 1)) = 1 Or Jours_Feries(DateValue(Date_Deb) + (Compteur - 1)) = True Then
Else
Compteur2 = Compteur2 + 1
End If
Next Compteur
MsgBox Compteur2 & " jours"
End Sub