Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, x$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Feuil1.UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
x = CStr(tablo(i, 1))
If x <> "" Then d(x) = tablo(i, 2)
Next
If FilterMode Then ShowAllData 'si la feuille est filtrée
With UsedRange
tablo = .Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
x = CStr(tablo(i, 1))
If d.exists(x) Then tablo(i, 2) = d(x)
Next
.Columns(2) = Application.Index(tablo, , 2) 'restitution
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheet_Activate 'lance la macro
End Sub