Sub Recherche()
Dim F1 As Worksheet, F2 As Worksheet, d As Object, r As Range, P As Range, v, n&, mes$, nn&, col As Variant
Set F1 = Sheets("Feuil1")
Set F2 = Sheets("Feuil2")
'---liste des valeurs---
Set d = CreateObject("Scripting.Dictionary")
For Each r In F1.[D1].Resize(F1.Cells.SpecialCells(xlCellTypeLastCell).Row) 'colonne D
If Not IsError(r) Then If r <> "" Then d(r.Value) = ""
Next
If d.Count = 0 Then Exit Sub
'---recherche des lignes en F2---
Set P = F2.UsedRange.Rows
For Each v In d.Keys
n = Application.CountIf(P, v)
If n Then
mes = mes & vbLf & "Valeur " & v & " en ligne" & IIf(n > 1, "s ", " ")
nn = 0
For Each r In P
col = Application.Match(v, r, 0)
If IsNumeric(col) Then
mes = mes & IIf(nn = 0, "", ", ") & r.Row
nn = nn + 1
If nn = n Then Exit For
End If
Next r
End If
Next v
MsgBox IIf(mes = "", "Aucune valeur trouvée...", Mid(mes, 2)), , "Sur " & F2.Name
End Sub