Option Explicit
Sub test()
Dim c As Range, x As Long, i As Long, t() As Variant, t2() As Variant
Dim j As Byte, k As Byte, trouve As Boolean
With Sheets("Feuil3")
t = .Range("A2", .Range("D65536").End(xlUp)).Value
End With
With Sheets("Feuil1")
For Each c In .Range("B2", .Range("B65536").End(xlUp))
If c.Value = "xxx" Then
trouve = False
t2 = .Cells(c.Row, 1).Resize(1, 4).Value
For i = 1 To UBound(t, 1)
k = 0
For j = 1 To 4
If t(i, j) = t2(1, j) Then k = k + 1
Next j
If k = 4 Then trouve = True: Exit For
Next i
If Not trouve Then .Cells(c.Row, 1).Resize(1, 4).Copy Sheets("Feuil2").Range("A65536").End(xlUp)(2)
Erase t2
End If
Next c
End With
With Sheets("Feuil2")
x = .Range("A65536").End(xlUp).Row
.Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
For i = x To 1 Step -1
If .Rows(i).Hidden Then .Rows(i).Delete
Next i
If .FilterMode Then .ShowAllData
End With
End Sub