Function ListeFiltre(r As Range) As String
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each r In r
If Not r.Rows.Hidden And CStr(r) <> "" Then d(r.Value) = ""
Next
ListeFiltre = Join(d.keys, " - ") 'concaténation
End Function