Function Datefin(deb As Date, duree As Date, feries As Range) As Date
Dim t1 As Date, t2 As Date, t3 As Date, t4 As Date, jour As Date
Dim dat&, t As Date, dur As Date, d#
t1 = [C3]
t2 = [D3]
t3 = [C4]
t4 = [D4]
jour = t2 - t1 + t4 - t3
dat = Int(CDbl(deb))
t = TimeValue(deb)
If IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) < 6 Then
If t <= t1 Then dur = jour
If t > t1 And t < t2 Then dur = t2 - t + t4 - t3
If t >= t2 And t < t3 Then dur = t4 - t3
If t >= t3 And t < t4 Then dur = t4 - t
End If
While dur < duree
dat = dat + 1
If IsError(Application.Match(dat, feries, 0)) And Weekday(dat, 2) < 6 _
Then dur = dur + jour
Wend
d = dur - duree
Datefin = dat + t4 - d - IIf(d >= t4 - t3, t3 - t2, 0)
End Function