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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. 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
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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