Merci
j'ai trouvé ça entre temps et ça fonctionne plutôt pas mal :
Private Sub CommandButton1_Click()
' Feuil5 :la feuille avec les noms
' Feuil3 :la feuille avec les données qui contiennent les noms
Application.ScreenUpdating = False
Dim Mat(), NbLignes As Integer, i As Integer, Ref As Range, c As Range
NbLignes = Feuil3.UsedRange.Rows.Count
ReDim Mat(NbLignes)
With Feuil5.Range("A1")
For i = 0 To NbLignes - 1
Mat(i) = .Offset(i)
Next
End With
With Sheets(3)
Set Ref = Intersect(.UsedRange, .Range("B:B"))
End With
Set Ref = Intersect(Ref, Ref.Offset(1))
For Each c In Ref
For i = 0 To NbLignes - 1
If Len(Replace(c, Mat(i), "")) <> Len(c) Then
c.Offset(0, 1) = Mat(i)
Exit For
End If
Next i
Next c
Application.ScreenUpdating = True
End Sub