Masquer onglet selon une valeur en VBA

cococorine Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
via55 Messages postés 14512 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

5 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
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 vba
Private 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
1
cococorine Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
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 classeur
Private 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

0
cococorine
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
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
0