Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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
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
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
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
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.
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.
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).
- 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