[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer
Dim Cat, xCat As String, nomCat As String, nFeuille As String
4 If Target.Cells(1, 1).Address = "$I$10" Then
5 Cat = Array("normal", "autre")
6 nomCat = Target.Cells(1, 1).Value
7 If nomCat <> "normal" Then nomCat = "autre"
8 Application.ScreenUpdating = False
9 With ThisWorkbook.Sheets
10 For i = 1 To .Count
11 nFeuille = .Item(i).Name
12 For j = 0 To UBound(Cat)
13 xCat = Cat(j)
14 If xCat = nFeuille Then .Item(i).Visible = (nFeuille = nomCat)
15 Next j
16 Next i
17 End With
18 Application.ScreenUpdating = False
19 End If
[COLOR="SeaGreen"]'Commentaires :
'6 'nomCat' prend la valeur sélectionnée en "I10".
'7 'nomCat' prend la valeur "autre" si "I10" contient autre chose que "normal".
'9,10,...,16,17 On va balayez l'ensemble des feuilles.
'11 'nFeuille' prend le nom de la i-ème feuille...
'12,...,15 ... pour le comparer aux noms de la liste 'Cat' créée en ligne 5.
'13 'xCat' prend le j-ème élément de la liste 'Cat'.
'14 Si 'nFeuille' est dans la liste, alors on affiche cette feuille si elle a
' le nom sélectionné en "I10" (car nFeuille = nomCat renvoie True) ou on masque
' cette feuille si son nom n'est pas celui sélectionné en "I10"
' (car nFeuille = nomCat renvoie False).
' L'état des feuilles dont le nom n'est pas dans la liste de choix de "I10" ne
' sera donc modifié par cette procédure.[/COLOR]
End Sub[/B][/COLOR]