Private Sub Worksheet_Change(ByVal Target As Range)
Dim x$, e
With [A1]
If Intersect(Target, .Cells) Is Nothing Then Exit Sub
x = UCase(.Value)
End With
For Each e In [liste]
If UCase(e) <> "TOUS" Then Shapes(e).Visible = x = "TOUS"
Next
If x <> "" And x <> "TOUS" Then Shapes(x).Visible = True
End Sub