Sub test()
Dim Ws As Worksheet
Dim Wv As Worksheet
Dim i As Long, x As Integer
Set Ws = ThisWorkbook.Worksheets("feuil1")
Set Wv = ThisWorkbook.Worksheets("feuil2")
With Ws 'tri croissant des dates enr
.Range("A1:I10000").Sort Key1:=.Range("H2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'en commençant par la fin on a la date la plus récente
For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1 ' On commence par la fin, cela permet de supprimer des lignes sans poser de problème dans la boucle.
x = Application.CountIf(Worksheets("feuil2").Range("C:C"), "=" & .Cells(i, 3)) 'compte n/s
If IsDate(.Cells(i, 9)) And x = 0 Then 'Si la valeur de la cellule contient une date
Set ZoneACopier = .Range("A" & i & ":D" & i)
ZoneACopier.Copy Destination:=Wv.Cells(Wv.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
'On copie toute la ligne en dessous de la dernière ligne non vide de la feuille 2
End If
Next i
End With
End Sub