afficher une feuille masqué

achraf26

XLDnaute Occasionnel
Bonjour,
afficher les feuilles masqué nommés ( B - C - D ) si la Cellule ( B1) feuille (A) Contient le mot "Start".
Merci
 

TBS

XLDnaute Nouveau
Bonsoir

Ce code doit fonctionner.
A mettre dans la feuille A

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("B1").Value = "start" Then
Sheets("B").Visible = True
Sheets("C").Visible = True
Sheets("D").Visible = True
Else
Sheets("B").Visible = False
Sheets("C").Visible = False
Sheets("D").Visible = False
End If

End Sub

@+
 

job75

XLDnaute Barbatruc
Bonsoir achraf26, Philippe, TBS,

Une autre solution :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, e
Application.ScreenUpdating = False
a = Array("B", "C", "D")
For Each e In a
  Sheets(e).Visible = xlSheetVisible
Next
If LCase([B1]) <> "start" Then Sheets(a).Visible = xlSheetHidden 'xlSheetVeryHidden
End Sub
A+
 

achraf26

XLDnaute Occasionnel
Bonsoir achraf26, Philippe, TBS,

Une autre solution :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, e
Application.ScreenUpdating = False
a = Array("B", "C", "D")
For Each e In a
  Sheets(e).Visible = xlSheetVisible
Next
If LCase([B1]) <> "start" Then Sheets(a).Visible = xlSheetHidden 'xlSheetVeryHidden
End Sub
A+
Bonjour Job,
Merci pour la réponse,
avec ce code , les feuilles ne sont pas sécurisés, on sait l'afficher avec bouton gauche de la souris
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour à tous

Une feuille peut être:

HIDDEN, elle peut alors être rendue visible par un clic-droit

VERYHIDDEN, il faut alors modifier la propriété "Visible" dans les propriétés de la feuille

À+
Philippe

Edit:
Pour quelqu'un qui connait l'astuce, il pourra rendre les feuilles visibles même si le code est protégé
 

Si...

XLDnaute Barbatruc
Bonjour

autre exemple pour 3 cas
Code:
Dim S(4) As Worksheet, n As Byte
Private Sub Worksheet_Change(ByVal R As Range)
    For n = 1 To 4
        Set S(n) = Sheets(Chr(65 + n)): S(n).Visible = 2
    Next
    Application.ScreenUpdating = 0 
    Select Case [B1]
        Case "Start1": S(1).Visible = 1: S(2).Visible = 1
        Case "Start2": S(3).Visible = 1: S(4).Visible = 1
        Case "Start3": S(1).Visible = 1: S(2).Visible = 1: S(3).Visible = 1: S(4).Visible = 1
    End Select
End Sub
 

Pièces jointes

  • vu pas vu.xlsm
    19.3 KB · Affichages: 25

job75

XLDnaute Barbatruc
Bonjour à tous,

Au post #8 il est dit "j'ai essayé de mettre Start3 pour feuille B-C-D-E"

Mais dans le fichier il est dit "Start1 normalement deverait ouvrir tous les feuilles".

Si c'est cette dernière proposition que l'on retient :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, e
Application.ScreenUpdating = False
a = Array("B", "C")
b = Array("D", "E")
For Each e In Split(Join(a, Chr(1)) & Chr(1) & Join(b, Chr(1)), Chr(1))
  Sheets(e).Visible = xlSheetVisible
Next
If LCase([B1]) = "start1" Then Exit Sub
If LCase([B1]) <> "start2" Then Sheets(a).Visible = xlSheetHidden 'xlSheetVeryHidden
If LCase([B1]) <> "start3" Then Sheets(b).Visible = xlSheetHidden 'xlSheetVeryHidden
Me.Select
End Sub
Bonne journée.
 

achraf26

XLDnaute Occasionnel
Bonjour à tous,

Au post #8 il est dit "j'ai essayé de mettre Start3 pour feuille B-C-D-E"

Mais dans le fichier il est dit "Start1 normalement deverait ouvrir tous les feuilles".

Si c'est cette dernière proposition que l'on retient :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, e
Application.ScreenUpdating = False
a = Array("B", "C")
b = Array("D", "E")
For Each e In Split(Join(a, Chr(1)) & Chr(1) & Join(b, Chr(1)), Chr(1))
  Sheets(e).Visible = xlSheetVisible
Next
If LCase([B1]) = "start1" Then Exit Sub
If LCase([B1]) <> "start2" Then Sheets(a).Visible = xlSheetHidden 'xlSheetVeryHidden
If LCase([B1]) <> "start3" Then Sheets(b).Visible = xlSheetHidden 'xlSheetVeryHidden
Me.Select
End Sub
Bonne journée.

Bonsoir job, merci pour le boulot
les feuilles fonctionnent corecctement à part ce n'est pas sécurisé on peut afficher les feuilles en cliquant sur la touche droite de la souris et on affiche les feuilles masquées
Merci
 

achraf26

XLDnaute Occasionnel
Bonjour

autre exemple pour 3 cas
Code:
Dim S(4) As Worksheet, n As Byte
Private Sub Worksheet_Change(ByVal R As Range)
    For n = 1 To 4
        Set S(n) = Sheets(Chr(65 + n)): S(n).Visible = 2
    Next
    Application.ScreenUpdating = 0
    Select Case [B1]
        Case "Start1": S(1).Visible = 1: S(2).Visible = 1
        Case "Start2": S(3).Visible = 1: S(4).Visible = 1
        Case "Start3": S(1).Visible = 1: S(2).Visible = 1: S(3).Visible = 1: S(4).Visible = 1
    End Select
End Sub

Merci ça fonctionne correctement, j'ai même réussi à rajouter une feuille nommé F j'ai mis S(5) ça fonctionnait, ma question est si j'ai plusieurs feuilles comment je vais savoir le numéro que je dois attribué à une feuille pour la controler ?
Merci pour votre aide
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

J'ai donné la solution plus haut,

Une feuille peut être:
VISIBLE
HIDDEN
VERYHIDDEN

Il faut utiliser la 3eme solution
........ et ne pas oublier de protéger le code.

Cette protection n'est pas 100% efficace.

À+
Philippe
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Merci ça fonctionne correctement, j'ai même réussi à rajouter une feuille nommé F j'ai mis S(5) ça fonctionnait, ma question est si j'ai plusieurs feuilles comment je vais savoir le numéro que je dois attribué à une feuille pour la controler ?
Merci pour votre aide

L
Au bas de ton écran les noms des onglets apparaissent.
De la gauche vers la droite,
Le premier c'est le 1
Le second c'est le 2
Le ..........

À+
Philippe
 

achraf26

XLDnaute Occasionnel
Bonjour

autre exemple pour 3 cas
Code:
Dim S(4) As Worksheet, n As Byte
Private Sub Worksheet_Change(ByVal R As Range)
    For n = 1 To 4
        Set S(n) = Sheets(Chr(65 + n)): S(n).Visible = 2
    Next
    Application.ScreenUpdating = 0
    Select Case [B1]
        Case "Start1": S(1).Visible = 1: S(2).Visible = 1
        Case "Start2": S(3).Visible = 1: S(4).Visible = 1
        Case "Start3": S(1).Visible = 1: S(2).Visible = 1: S(3).Visible = 1: S(4).Visible = 1
    End Select
End Sub

Bonsoir, les feuilles que j'ai dans ma classeur ont temporairement un surnom... je vais changé le nom de la feuille par aprés, le problème j'ai nommé la feuille n°2 (B) = Bernard, y'a erreur d'execution, les feuilles seront pas numéroté. c'est la seule solution que j'ai pris pour commencer bien mon calsseur, je me suis bloqué dans ce cas de nomination ça changera tous
 

Pièces jointes

  • Nomé les feuilles.xlsm
    18.5 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu