Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, n&, i&
Set dest = Sheets("Terminé").ListObjects(1).Range
n = IIf(dest(2, 12) = "", 2, dest.Rows.Count + 1)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With ListObjects(1).Range
For i = 2 To .Rows.Count
If LCase(.Cells(i, 12)) = "terminé" Then
dest.Rows(n) = .Rows(i).Value 'copie les valeurs
.Rows(i).Delete xlUp 'supprime la ligne
n = n + 1
i = i - 1
End If
Next
End With
dest.Resize(n).Columns.AutoFit 'ajustement largeurs
ThisWorkbook.RefreshAll 'MAJ du TCD
Application.EnableEvents = True 'réactive les évènements
End Sub