Masquer les feuilles d'un classeur Excel sauf la 1ère en VBA

soccas83 Messages postés 2 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour à tous,

Tout d'abord, un grand merci pour votre aide.

Je souhaite masquer toutes les feuilles de mon classeur sauf la 1ère à l'aide d'un bouton de contrôle mais je n'arrive pas à le faire. Je suis donc parti sur le code suivant qui indique de fermer toutes les feuilles qui commence par "Nom" mais du coup, il me réouvre 3 autres feuilles que j'avais masqué et qui ne contient pas "Nom" sur l'onglet.

Comment ajouter à ce code, lui dire qu'il ne réouvre pas les feuilles déjà masquées? 

Code:

Sub Masquer()

Application.ScreenUpdating = False

Dim sh As Worksheet
    For Each sh In Worksheets
        sh.Visible = InStr(sh.Name, "Nom") = 0
               
    Next sh
End Sub

4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    Bonjour,

    Masque que les feuilles dont le nom commence par Nom

    Sub Masquer()
        Application.ScreenUpdating = False
        
        Dim sh As Worksheet
        For Each sh In Worksheets
            If sh.Name Like "Nom*" Then
                sh.Visible = False
            End If
        Next sh
        Application.ScreenUpdating = True
    End Sub
    
    1
  2. soccas83 Messages postés 2 Statut Membre
     

    Bonjour,

    Merci mais c'est le même code que j'ai écrit..

    Je souhaiterais ajouter une autre ligne de code qui me permetttrait de lui dire, que les feuilles qui sont déjà masquées, il les laisse masquées.

    Peut être avec une condition If...

    Mais je ne sais pas l'écrire.

    Merci pour votre aide

    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    Re,

    Merci mais c'est le même code que j'ai écrit..

    Non pas du tout, votre code teste "Nom", si oui masque, si non affiche

    "mon code": si "nom*" masque, c'est tout, y a pas de lignes pour afficher quoi que ce soit

    0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     

    Bonjour,

    Teste si ta feuille est affichée ou non :

    ​
    Sub Masquer()
    Application.ScreenUpdating = False
    Dim sh As Worksheet
        For Each sh In Worksheets
            If sh.Visible Then
                sh.Visible = InStr(sh.Name, "Nom") = 0
            End If
        Next sh
    End Sub
    
    ​

    0