Afficher les feuilles selon le contenu d'une cellule

chaelie2015

XLDnaute Accro
Bonjour Forum
je souhaite afficher les feuilles selon le contenu de la cellule H3
si la cellule H3 = N-2 donc afficher les onglets "N","N-1" et "N-2" seulement la feuille"N-3" restera masquée
et ainsi de suite.
ce code est tres lent
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Niveau N").Visible = False
Sheets("Niveau N-1").Visible = False
Sheets("Niveau N-2").Visible = False
Sheets("Niveau N-3").Visible = False
If [H3] = "N" Then
Sheets("Niveau N").Visible = True
Sheets("Niveau N-1").Visible = False
Sheets("Niveau N-2").Visible = False
Sheets("Niveau N-3").Visible = False
Else

End If

If [H3] = "N-1" Then
Sheets("Niveau N").Visible = True
Sheets("Niveau N-1").Visible = True
Sheets("Niveau N-2").Visible = False
Sheets("Niveau N-3").Visible = False
Else

End If

If [H3] = "N-2" Then
Sheets("Niveau N").Visible = True
Sheets("Niveau N-1").Visible = True
Sheets("Niveau N-2").Visible = True
Sheets("Niveau N-3").Visible = False
Else

End If

If [H3] = "N-3" Then
Sheets("Niveau N").Visible = True
Sheets("Niveau N-1").Visible = True
Sheets("Niveau N-2").Visible = True
Sheets("Niveau N-3").Visible = True
Else

End If
End Sub

Salutations
 

Pièces jointes

  • CHARLIE afficher les onglet selon cellule.xlsx
    11.3 KB · Affichages: 7
Dernière édition:

shinozak

XLDnaute Occasionnel
Bonjour essaie ça, :)
VB:
Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H3")) Is Nothing Then
Dim Ws As Worksheet


For Each Ws In Sheets
Ws.Visible = True
Next Ws

If Range("H3") = "N-2" Then
Sheets("Niveau N-3").Visible = False

ElseIf Range("H3") = "N-1" Then
Sheets("Niveau N-2").Visible = False
Sheets("Niveau N-3").Visible = False


ElseIf Range("H3") = "N" Then
Sheets("Niveau N").Visible = False
Sheets("Niveau N-1").Visible = False
Sheets("Niveau N-2").Visible = False
Sheets("Niveau N-3").Visible = False


End If
End If
End Sub
 

Discussions similaires

Réponses
0
Affichages
662