Private Sub Worksheet_Change(ByVal Target As Range)
Dim xrg As Range, x
If Range("a5").ListObject.ListRows.Count = 0 Then Exit Sub
If Intersect(Target, Range("a5").ListObject.ListColumns("Date de fin").DataBodyRange) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xrg = Range("a5").ListObject.ListColumns("Etat").DataBodyRange
For Each x In xrg.Cells: Rows(x.Row).EntireRow.Hidden = (x = "Terminé"): Next x
End Sub