Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, resu(), n&, j%
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Sheets("Début").[A1].CurrentRegion.Resize(, 7) 'matrice, plus rapide
For i = 1 To UBound(tablo)
d(tablo(i, 4) & tablo(i, 3) & tablo(i, 7)) = ""
Next i
tablo = Sheets("Fin").[A1].CurrentRegion.Resize(, 7) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 7)
For i = 1 To UBound(tablo)
If Not d.exists(tablo(i, 4) & tablo(i, 3) & tablo(i, 7)) Then
n = n + 1
For j = 1 To 7: resu(n, j) = tablo(i, j): Next j
End If
Next i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de destination
If n Then .Resize(n, 7) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, 7).ClearContents 'RAZ en dessous
End With
End Sub