Masquer onglet selon une valeur en VBA
cococorine
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai 5 feuilles de calcul soit feuil1, feuil2, feuil3, feuil 4 et feuil5
Dans la feuille 5 dans la celulle "B2" j'ai une liste de choix avec comme valeur 1, 2, 3 et 4
Si je sélectionne 1 alors les feuilles 2 , 3 et 4 se masquent et la feuille 1 soit active
Si je sélectionne 2 alors les feuilles 1 , 3 et 4 se masquent et la feuille 2 soit active
Si je sélectionne 3 alors les feuilles 1 , 2 et 4 se masquent et la feuille 3 soit active
Si je sélectionne 4 alors les feuilles 1 , 2 et 3 se masquent et la feuille 4 soit active
Quelqu'un peut-il me venir en aide SVP
Cordialement
J'ai 5 feuilles de calcul soit feuil1, feuil2, feuil3, feuil 4 et feuil5
Dans la feuille 5 dans la celulle "B2" j'ai une liste de choix avec comme valeur 1, 2, 3 et 4
Si je sélectionne 1 alors les feuilles 2 , 3 et 4 se masquent et la feuille 1 soit active
Si je sélectionne 2 alors les feuilles 1 , 3 et 4 se masquent et la feuille 2 soit active
Si je sélectionne 3 alors les feuilles 1 , 2 et 4 se masquent et la feuille 3 soit active
Si je sélectionne 4 alors les feuilles 1 , 2 et 3 se masquent et la feuille 4 soit active
Quelqu'un peut-il me venir en aide SVP
Cordialement
5 réponses
-
Bonjour cocorine
ALT+F11 pour ouvrir éditeur VBA
Double clic sur Feuil5 dans l'arborescence à gauche
copie et colle la macro suivante dans la page blanche et ferme éditeur vbaPrivate Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B2")) Is Nothing Then For n = 1 To 4 If n = Target.Value Then Sheets(n).Visible = True Else Sheets(n).Visible = False Next Sheets(Target.Value).Activate End If End Sub
Cdlmnt
Via
-
Bonsoir,
J'ai probablement pasété claire et je pensais adapter mon exemple avec mon fichier mais cela ne fonctionne pas comme je veux, il me masque plein de feuilles.
Donc j'ai bien 5 feuilles pour l'exemple en vrai + de 60, dans la feuille choix dans la celulle "B2" j'ai une liste de choix avec comme valeur CHANEL, GUERLAIN, DIOR, NINA.
Les feuilles se nomment Guerlain_F1, Dior_B, Chanel_F6, Nina_ricci_9
Si je sélectionne CHANEL alors les feuilles Guerlain_F1, Dior_B, Nina_ricci_9 sont masquées
Si je sélectionne GUERLAIN alors les feuilles Chanel_F6, Dior_B, Nina_ricci_9 sont masquées
Si je sélectionne DIOR alors les feuilles Chanel_F6, Guerlain_F1, Nina_ricci_9 sont masquées
Si je sélectionne NINA alors les feuilles Chanel_F6, Guerlain_F1, Dior_B sont masquées
Avec les noms des feuilles
Est-ce que l'on peut mettre aussi sheetveryhidden pour être tranquille ??
Merci d'avance
Cordialement -
Re
Si les 4 feuilles commencent bien par des initiales différentes et se suivent tu peux essayer une macro du style de la suivante où les feuilles à traiter sont les 2°, 3°, 4° et 5° du classeurPrivate Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B2")) Is Nothing And Target.Value <> "" Then For n = 2 To 5 'boucle de la 2eme feuille à la 5eme ' A ADAPTER 'compare 1ere lettre du nom de la feuille et 1ere lettre de la cible If Left(Sheets(n).Name, 1) = Left(Target.Value, 1) Then Sheets(n).Visible = True: Sheets(n).Activate Else Sheets(n).Visible = xlVeryHidden Next End If End Sub
Cdlmnt
-
Bonjour et merci, c est fait.
et pour terminer, dans la cellule E9, il y a une autre liste deroulante avec des valeurs 4, 6, 8 et 10
si je sélectionne 4 masquées les feuilles B, C, D ;
si je sélectionne 6 masquées les feuilles À C D
8 masquées À B D
10 masquées À B C
Je ne peux pas être plus claire avec les noms de feuille, désolée.
Juste pour moi, il n y a que la technique avec FOR pour masquer les feuilles, avec if, else et endwith y a t il un moyen ?
Cela pourrai plus tard me servir.
Avec les décalages horaires, je ne sais plus comment je vie.
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re
S'il y a plusieurs cas sans correspondance entre le choix dans la liste et le nom des feuilles et/ou des feuilles qui ne se suivent pas tu peux employer la méthode Select case , exemple à adapter :Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E9")) Is Nothing And Target.Value <> "" Then Select Case Target.Value Case 4 Sheets("B").Visible = xlVeryHidden Sheets("C").Visible = xlVeryHidden Sheets("D").Visible = xlVeryHidden Sheets("A").Visible = True Sheets("A").Activate Case 6 Sheets("A").Visible = xlVeryHidden Sheets("C").Visible = xlVeryHidden Sheets("D").Visible = xlVeryHidden Sheets("B").Visible = True Sheets("B").Activate ' continuer ici avec les autres Case End Select End If End Sub
Cdlmnt