Sub Epure()
'déclare les varianles : List, Exclure, t1, t2 sont de type Variant
Dim List, Exclure, d As Object, t1, t2
'tableau des valeurs de A2 à la dernière cellule remplie colonne A
List = Range("A2", [A65536].End(xlUp))
'tableau des valeurs de B2 à la dernière cellule remplie colonne B
Exclure = Range("B2", [B65536].End(xlUp))
'crée l'objet d
Set d = CreateObject("Scripting.Dictionary")
'pour chaque item t1 dans le tableau List
For Each t1 In List
'si l'item t1 est <> "" alors...
If t1 <> "" Then
'pour chaque item t2 dans le tableau Exclure
For Each t2 In Exclure
'si t2 <> "" et si t1 commence par t2 ("*" est un caractère générique) alors aller à l'adresse 1
If t2 <> "" And t1 Like t2 & "*" Then GoTo 1
'item t2 suivant
Next
'crée un item de la collection d
d(t1) = t1
'ferme le bloc du 1er If
End If
' adresse 1 => item t1 suivant
1 Next
'---restitution---
'efface les valeurs de la plage C2:C65536
[C2:C65536].ClearContents
'entre les valeurs de d dans la plage commençant en C2 et de hauteur = nombre de valeurs de d
[C2].Resize(d.Count) = Application.Transpose(d.Items)
End Sub