Sub Cible()
Dim we As Worksheet, ws As Worksheet, d As Object, dd As Object, tablo, aucune(), i&, rest(), x$
Set we = Sheets("Entrée")
Set ws = Sheets("Sortie")
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
tablo = we.Range("C1:E" & we.Range("C" & Rows.Count).End(xlUp).Row) 'matrice, plus rapide
ReDim aucune(1 To UBound(tablo), 1 To 2)
For i = 2 To UBound(tablo)
d(tablo(i, 1)) = tablo(i, 3) 'mémorise la valeur
dd(tablo(i, 1)) = i 'mémorise la ligne
Next i
tablo = ws.[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
ReDim rest(1 To UBound(tablo), 1 To 1): rest(1, 1) = ws.[G1]
For i = 2 To UBound(tablo)
x = tablo(i, 1)
If d.exists(x) Then rest(i, 1) = d(x): aucune(dd(x), 2) = 1 _
Else rest(i, 1) = "Aucune correspondance"
Next i
For i = 2 To UBound(aucune)
If IsEmpty(aucune(i, 2)) Then aucune(i, 1) = "Aucune correspondance"
Next i
'---restitution---
we.[B1].Resize(UBound(aucune)) = aucune
ws.[G1].Resize(UBound(rest)) = rest
End Sub