Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
With [A2].CurrentRegion.Columns(2)
.Rows.Hidden = False 'affiche tout
If [D1] = "" Then Exit Sub
.Replace [D1], "µ", xlPart
.Rows.Hidden = True 'masque tout
.SpecialCells(xlCellTypeConstants, 2).Rows.Hidden = False 'affiche les textes
.Replace "µ", [D1]
End With
End Sub