Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:D65536")) Is Nothing Then Exit Sub
Dim debut As Date, delai As Integer, fin As Date, col As Byte
On Error Resume Next
debut = Int(Cells(Target.Row, 2))
delai = Int(Cells(Target.Row, 3)) + Int(Cells(Target.Row, 4))
fin = debut - 1
If debut = 0 Or Target.Count > 1 Or Err Then Intersect(Target.EntireRow, Columns(5)) = "": Exit Sub
While fin < debut + delai
fin = fin + 1
col = Application.Match(Year(fin), Rows(1), 0) 'n° de colonne des jours fériés de l'année
If Err Then MsgBox "Date non valide ou tableau des jours fériés incomplet": Exit Sub
delai = delai - (Weekday(fin) = 1 Or Application.CountIf(Columns(col), Format(fin, "d mmmm")) = 1)
Wend
Cells(Target.Row, 5) = fin
End Sub