Comprenette difficile ? Pourquoi croyez-vous que j'ai mis xlSheetVeryHidden en commentaire ?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
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
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
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
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.