Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ' Si plusieurs cellules sélectionnées, on sort
If Not Intersect(Target, [D:D]) Is Nothing Then ' Si cellule cliquée est en colonne D
Dim DL%, i%, Cat
DL = Sheets("liste déroulante").Range("E65500").End(xlUp).Row ' Calcule dernière cellule de la liste déroulante
Cat = Sheets("liste déroulante").Range("E2:F" & DL) ' On met la liste dans un tableau pour aller plus vite
For i = 1 To UBound(Cat) ' Pour toutes les catégories
If Cat(i, 2) <> "" Then ' Si pas de mot clé, on ignore
If LCase(Target) Like "*" & LCase(Cat(i, 2)) & "*" Then ' Si mot clé présent dans la cellule cliquée
Cells(Target.Row, "C") = Cat(i, 1) ' On met la catégorie en colonne C
Exit Sub ' Et on sort
End If
End If
Next i
End If
End Sub