re,
avec une fonction personnalisée, attention les jours fériés sont (temporairement) ceux dans le tableau "tabel2"
Function Patrice(Date1 As Double, Date2 As Double, TF As Range, Horaires As Range)
Dim aHoraires: aHoraires = Horaires.Value2
If Date1 = 0 Or Date2 = 0 Then x = "Erreur données": GoTo FIN
If WorksheetFunction.WorkDay_Intl(Date1 - 1, 1, 1, TF) <> Int(Date1) Or Date1 - Int(Date1) > aHoraires(2, 1) Then 'jour est weekend ou jour férié ou heure est après fin du jour
Date1 = WorksheetFunction.WorkDay_Intl(Date1, 1, 1, TF) + aHoraires(1, 1) 'premier jour ouvrable au début
Else
Date1 = Application.Max(Date1, Int(Date1) + aHoraires(1, 1)) 'minimum = début du jour
End If
If WorksheetFunction.WorkDay_Intl(Date2 - 1, 1, 1, TF) <> Int(Date2) Or Date1 - Int(Date1) < aHoraires(1, 1) Then 'jour est weekend ou jour férié ou heure est avant début du jour
Date2 = WorksheetFunction.WorkDay_Intl(Date2, -1, 1, TF) + aHoraires(2, 1) 'jour ouvrable précédent au fin de ce jour
Else
Date2 = Application.Min(Date2, Int(Date2) + aHoraires(2, 1)) 'max = fin du jour
End If
If Date1 >= Date2 Then x = 0: GoTo FIN
x = (WorksheetFunction.NetworkDays_Intl(Date1, Date2, 1, TF) - 1) * (aHoraires(2, 1) - aHoraires(1, 1)) + Date2 - Date1 - (Int(Date2) - Int(Date1))
FIN:
Patrice = x
End Function