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
 

Si...

XLDnaute Barbatruc
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

  • vupas vu.xlsm
    21.1 KB · Affichages: 21

achraf26

XLDnaute Occasionnel
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:

job75

XLDnaute Barbatruc
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

  • Acces - Start4(1).xlsm
    27.8 KB · Affichages: 19

job75

XLDnaute Barbatruc
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

  • Acces - Start4(2).xlsm
    27.9 KB · Affichages: 22

Si...

XLDnaute Barbatruc
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

  • vu pas vu 2.xlsm
    30.5 KB · Affichages: 22

achraf26

XLDnaute Occasionnel
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

  • Acces-SI.xlsm
    20.8 KB · Affichages: 17
Dernière édition:

Si...

XLDnaute Barbatruc
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

  • vu pas vu 3.xlsm
    35.7 KB · Affichages: 23

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami