Public Function NB_jours_activite_Periode(Arrivée_Jour As Date, Arrivée_Heure As Date, _
Départ_Jour As Date, Départ_Heure As Date)
Application.Volatile
Dim Période_programme_début, Période_programme_fin As Date
Période_programme_début = Worksheets("Aparamètres").Cells(4, 2).Value
Période_programme_fin = Worksheets("Aparamètres").Cells(5, 2).Value
If (Arrivée_Jour > Période_programme_fin) Or (Départ_Jour < Période_programme_début) Then
NB_jours_activite_Periode = 0
Else
If (Arrivée_Jour < Période_programme_début) And (Départ_Jour <= Période_programme_fin) Then
Arrivée_Jour = WorksheetFunction.Max(Arrivée_Jour, Période_programme_début - 1)
NB_jours_activite_Periode = NB_jours_activite(Arrivée_Jour, Arrivée_Heure, Départ_Jour, Départ_Heure)
Else
If (Arrivée_Jour < Période_programme_début) And (Départ_Jour > Période_programme_fin) Then
NB_jours_activite_Periode = 99999
Else
If (Arrivée_Jour <= Période_programme_fin) And (Départ_Jour <= Période_programme_fin) Then
NB_jours_activite_Periode = NB_jours_activite(Arrivée_Jour, Arrivée_Heure, Départ_Jour, Départ_Heure)
Else
If (Arrivée_Jour <= Période_programme_fin) And (Départ_Jour > Période_programme_fin) Then
Départ_Jour = WorksheetFunction.Min(Départ_Jour, Période_programme_fin)
NB_jours_activite_Periode = NB_jours_activite(Arrivée_Jour, Arrivée_Heure, Départ_Jour, Départ_Heure)
End If
End If
End If
End If
End If
End Function