Private Sub Worksheet_Activate()
Dim P As Range, titre$, i&, critere
Set P = [A1].CurrentRegion
titre = P(1, 2)
Application.ScreenUpdating = False
P.Columns(2).ClearContents 'RAZ colonne B
With Sheets("Feuil1").[A1].CurrentRegion 'feuille des critères
For i = 2 To .Rows.Count
critere = Split(Application.Trim(.Cells(i, 2)), ", ") 'attention au séparateur
If UBound(critere) >= 0 Then
ThisWorkbook.Names.Add "Crit", critere 'nom défini
[H2] = "=SUMPRODUCT(N(ISNUMBER(SEARCH(Crit,A2))))" 'critere de filtrage
P.Columns(3) = P.Columns(2).Value 'copie toute la colonne B
P.AdvancedFilter xlFilterInPlace, [H1:H2] 'filtre avancé
P.Columns(3).SpecialCells(xlCellTypeVisible) = "=IF(RC[-1]="""","""",RC[-1]&"" - "")&""" & .Cells(i, 1) & """" 'formule
If FilterMode Then ShowAllData 'RAZ
P.Columns(3) = P.Columns(3).Value 'supprime les formules
P.Columns(2) = P.Columns(3).Value 'copie les textes concaténés
End If
Next
End With
P.Columns(3).ClearContents 'RAZ colonne C
[H2] = ""
P(1, 2) = titre
End Sub