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