Function ListeCat(ByVal Mot, rangeDico As Range, Optional sansDoublon)
Const separ = " !""#$€%&'()*+,-./:;<=>?@[\]{|}¤"
Dim cat, lencat&, i&, x, r
ListeCat = Empty: Mot = " " & Mot & " "
For Each cat In rangeDico.Value
If Len(Trim(cat)) > 0 Then
lencat = Len(Trim(cat))
For i = 2 To Len(Mot) - 1
x = Mid(Mot, i, lencat)
If x = cat Then
If InStr(separ, Mid(Mot, i - 1, 1)) * InStr(separ, Mid(Mot, i + lencat, 1)) <> 0 Then
r = r & "|" & cat
If Not IsMissing(sansDoublon) Then Exit For
i = i + lencat
End If
End If
Next i
End If
Next cat
ListeCat = Mid(r, 2)
End Function