Sub
Sub test()
MsgBox recherchex([A1:J300], "toto")
End Sub
Function recherchex(p As Range, txt As String)
Dim x$, z$, cel1 As Range,fin as boolean
Set cel1 = p.Cells(1)
Do
Set p = Range(cel1, p.Cells(p.Cells.Count))
On Error Resume Next
x = Evaluate("ADDRESS(SMALL(IF(" & p.Address & "=""" & txt & """,ROW(" & p.Address & ")),1),MATCH(""" & txt & """,INDEX(" & p.Address & ",SMALL(IF(" & p.Address & "=""" & txt & """,ROW(" & p.Address & ")),1),),0))")
fin = Err.Number > 0: Err.Clear
z = z & " " & x
Set cel1 = Cells(Range(x).Row + 1, "A")
Debug.Print "trouvée! " & x & " reste a chercher " & p.Address
Loop Until fin = True
recherchex = Range(Replace(Application.Trim(z), " ", ",")).Address
End Function