Masquer onglet selon une valeur en VBA

Fermé
cococorine Messages postés 2 Date d'inscription samedi 8 septembre 2018 Statut Membre Dernière intervention 8 septembre 2018 - 8 sept. 2018 à 16:43
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 - 9 sept. 2018 à 12:59
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
A voir également:

5 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
8 sept. 2018 à 18:40
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 samedi 8 septembre 2018 Statut Membre Dernière intervention 8 septembre 2018
8 sept. 2018 à 21:50
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 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié le 9 sept. 2018 à 02:10
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
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 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
9 sept. 2018 à 12:59
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