afficher une feuille masqué

  • Initiateur de la discussion Initiateur de la discussion achraf26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonsoir

Il vaut mieux garder les noms avec

VB:
Private Sub Worksheet_Change(ByVal R As Range)
      ini 2 ‘masque
      Application.ScreenUpdating = 0
      Select Case [B1]
          Case "Start1": Sheets("Bernard").Visible = 1: Sheets("Claude").Visible = 1
          Case "Start2": Sheets("Denise").Visible = 1: Sheets("Eliane").Visible = 1
          Case "Start3": ini 1 ‘affiche
      End Select
End Sub
Sub ini(k As Byte)
     Dim n As Byte
    For n = 0 To 3
        Sheets(Array("Bernard", "Claude", "Denise", "Eliane")(n)).Visible = k
    Next
End Sub
 

Pièces jointes

Bonsoir

Il vaut mieux garder les noms avec

VB:
Private Sub Worksheet_Change(ByVal R As Range)
      ini 2 ‘masque
      Application.ScreenUpdating = 0
      Select Case [B1]
          Case "Start1": Sheets("Bernard").Visible = 1: Sheets("Claude").Visible = 1
          Case "Start2": Sheets("Denise").Visible = 1: Sheets("Eliane").Visible = 1
          Case "Start3": ini 1 ‘affiche
      End Select
End Sub
Sub ini(k As Byte)
     Dim n As Byte
    For n = 0 To 3
        Sheets(Array("Bernard", "Claude", "Denise", "Eliane")(n)).Visible = k
    Next
End Sub

Solution trouvée, Merci SI

si je veux rajouter une feuille, et creer un acces "Start4" je dois changer quelques chose ?
et que ça veux dire : For n = 0 To 3
 
Dernière édition:
Bonjour à tous,

Je n'avais pas testé mais on ne peut pas appliquer xlSheetVeryHidden à un groupe de feuilles.

Il faut donc les traiter une par une :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, c, x$, test As Boolean, e
a = Array("B", "C") 'noms modifiables
b = Array("D", "E") 'noms modifiables
c = Array("F", "G", "H") 'noms modifiables
x = LCase(CStr([B1]))
Application.ScreenUpdating = False
test = x = "start1" Or x = "start2"
For Each e In a
  Sheets(e).Visible = IIf(test, xlSheetVisible, xlSheetVeryHidden)
Next
test = x = "start1" Or x = "start3"
For Each e In b
  Sheets(e).Visible = IIf(test, xlSheetVisible, xlSheetVeryHidden)
Next
test = x = "start1" Or x = "start4"
For Each e In c
  Sheets(e).Visible = IIf(test, xlSheetVisible, xlSheetVeryHidden)
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

Re,

Un code plus "ramassé" dans ce fichier (2) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, c, x$, g, n%, vis%, e
a = Array("B", "C") 'noms modifiables
b = Array("D", "E") 'noms modifiables
c = Array("F", "G", "H") 'noms modifiables
x = LCase(CStr([B1]))
Application.ScreenUpdating = False
For Each g In Array(a, b, c)
  n = n + 1
  vis = IIf(x = "start1" Or x = "start" & n + 1, xlSheetVisible, xlSheetVeryHidden)
  For Each e In g
    Sheets(e).Visible = vis
Next e, g
End Sub
A+
 

Pièces jointes

Re

Dans la macro des plus classiques
Sub ini(k As Byte)
Dim n As Byte
For n = 0 To 3
Sheets(Array("Bernard", "Claude", "Denise", "Eliane")(n)).Visible = k
Next
End Sub

Array est un tableau (VBA) de noms.

Ceux-ci sont au nombre de 4 et dont les indices n vont de 0 à 3 car Excel décide de partir de 0 et non de 1 (pour n =0 on a le premier nom, pour n = 1 on a le deuxième …).

Maintenant, pour éviter de multiplier les propositions, il serait bon et même très recommandé de préparer correctement ton projet : combien d’onglets en tout, combien d’onglets à masquer/ afficher avec leur nom exact et quand …

Dans le nouveau fichier, ces renseignements sont donnés dans un tableau (modifiable à souhait).
J’ai même rajouté une macro pour inscrire ou pas le critère x. par simple clic. Elle n’est pas obligatoire.
 

Pièces jointes

Re

Dans la macro des plus classiques
Sub ini(k As Byte)
Dim n As Byte
For n = 0 To 3
Sheets(Array("Bernard", "Claude", "Denise", "Eliane")(n)).Visible = k
Next
End Sub

Array est un tableau (VBA) de noms.

Ceux-ci sont au nombre de 4 et dont les indices n vont de 0 à 3 car Excel décide de partir de 0 et non de 1 (pour n =0 on a le premier nom, pour n = 1 on a le deuxième …).

Maintenant, pour éviter de multiplier les propositions, il serait bon et même très recommandé de préparer correctement ton projet : combien d’onglets en tout, combien d’onglets à masquer/ afficher avec leur nom exact et quand …

Dans le nouveau fichier, ces renseignements sont donnés dans un tableau (modifiable à souhait).
J’ai même rajouté une macro pour inscrire ou pas le critère x. par simple clic. Elle n’est pas obligatoire.

Bonsoir SI
était magnifique cette proposition, j'ai bien compris le system de cochage et de rajoute des feuilles
svp dernière chose, je préfère les séparer, avoir une feuille "Acces" ou je peux sélectionner le "Start" 1 ou 2 ou ... et une autre feuille "Permission" ou il y'a le tableau .
j'ai trouvé la solution magnifique.
 

Pièces jointes

Dernière édition:
Re

Si tu veux déplacer le tableau dans une autre feuille il faut aussidéplacer la macro le gérant avec quelques modifications comme dans le fichier joint.

Nota : on peut ajouter un test pour n’ouvrir cette feuille qu’avec un mot de passe.

J'ai enlevé le formulaire inutile (sinon pour explorer une autre piste).
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
208
Réponses
11
Affichages
467
Réponses
2
Affichages
163
Réponses
10
Affichages
335
Réponses
7
Affichages
288
Retour