Sub MAJ()
Dim w1 As Worksheet, w2 As Worksheet, P As Range, rest, t, d As Object, i&, n&
Set w1 = Feuil1: Set w2 = Feuil2 'CodeNames des feuilles
If Application.CountIf(w1.[G8:G10], w2.[F2]) = 0 Then Exit Sub
Set P = Intersect(w2.[M:M], w2.UsedRange.EntireRow)
rest = P.Resize(, 2) 'au moins 2 éléments
t = Intersect(w1.[D:E], w1.UsedRange.EntireRow) 'au moins 2 éléments
Set d = CreateObject("Scripting.Dictionary")
'---liste 1ère colonne sans doublon---
For i = 1 To UBound(t)
If t(i, 1) <> "" Then d(t(i, 1)) = ""
Next
'---remplissage du tableau rest---
For i = 1 To UBound(rest)
If rest(i, 1) <> "" Then If Not d.exists(rest(i, 1)) Then _
n = n + 1: rest(n, 1) = rest(i, 1)
Next
'---restitution---
If n Then P.Resize(n) = rest
If n > 2 Then P(3).Resize(n - 2).Name = "maplage" 'plage nommée
P(1).Offset(n).Resize(w2.Rows.Count - n - P.Row + 1).Delete xlUp
End Sub