Démasquer tous les onglets rapidement

Résolu
Thierry_56 -  
Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, j'ai 52 onglets masqués pour 52 semaines. Quand tous les onglets sont ouverts, je peux les sélectionner en groupe, clic droit, masquer et ça me convient parfaitement. Par contre, quand je veux faire l'inverse : ouvrir ces 52 onglets en même temps, je n'ai pas trouvé l'astuce pour le faire rapidement à part le faire manuellement (très long) ou avec Vba. Auriez-vous une solution plus simple ? Merci

6 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Un petit code VBA
    Sub AfficherSh() '***afficher les feuilles
    For Each Sh In Worksheets
    Sheets(Sh.Name).Visible = True
    Next Sh
    End Sub


    0
    1. Thierry_56
       
      Bonjour, j'ai copié à l'identique ce code, je l'ai rattaché à un bouton mais ça ne fonctionne pas. Est ce que c'est plus simple de dire qu'on démasque tous les onglets commençant par S. Si Oui, pourriez vous adapter votre code svp. Merci beaucoup pour votre aide
      0
  2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Le code est correct . Pour voir se qui se passe on va ajouter un message:
     Sub AfficherSh() '***afficher les feuilles
    For Each Sh In Worksheets
    Sheets(Sh.Name).Visible = True
    MsgBox " la feuille. " & Sh.Name & " est visible"
    Next Sh
    End Sub

    0
  3. Thierry_56
     
    J'ai un message avec un triangle jaune et un point d'exclamation :
    Erreur de compilation:
    Variable non définie
    voici mon code (je n'ai fait qu'un copier/coller) :

    Sub AfficherSh() '***afficher les feuilles
    For Each Sh In Worksheets
    Sheets(Sh.Name).Visible = True
    MsgBox " la feuille. " & Sh.Name & " est visible"
    Next Sh
    End Sub

    Merci
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      Rajoute
      Dim sh As Worksheet 

      avant
      For Each Sh In Worksheets


      Cordialement
      0
      1. Thierry_56 > ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention  
         
        non ça ne fonctionne toujours pas
        je fais F5 sur le code.
        Je vais passer en mode "membre" comme ça je pourrai faire un imprime écran pour vous montrer
        0
      2. Thierry-du-56 Messages postés 11 Statut Membre > Thierry_56
         
        0
      3. Thierry-du-56 Messages postés 11 Statut Membre > Thierry-du-56 Messages postés 11 Statut Membre
         
        J'ai réussi à faire fonctionner les 2 codes de votre fichier
        Pour ma part, j'ai 5 onglets que je dois garder ouverts en permanence mais ce que je souhaite c'est de pouvoir ouvrir tous mes onglets (avec true) qui commence par S (S01, S02, S03 etc...) en un clic idéalement et faire la manip inverse (avec false) pour les masquer...c'est sûrement possible
        0
      4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476 > Thierry-du-56 Messages postés 11 Statut Membre
         
        Bonjour Thierry_56 et ALS35,
        C'est difficile de suivre le poste quant il ne se suive pas à cause de (Commenter)...!
        Alors Thierry_56 on en est ou... sa marche Oui ou Non?
        Salutations.
        Le Pingou
        0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Thierry_56
     
    J'ai bien reçu votre fichier...c'est exactement ce que je souhaite faire mais même en cliquant sur votre fichier, ça ne fonctionne pas.
    ça me dit : Impossible d'exécuter le code en mode arrêt
    1
  6. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour Thierry_56,
    J'ai modifier le code pour prise en compte remarque du poste 10.
    Remplacer "Sub MasquerSh() par:
    Sub MasquerSh() '***afficher les feuilles
    nsh = Array("S01", "S02", "S03", "S04", "S05")
    For Each sh In Worksheets
    in_nsh = False
    For c = 0 To 4
    If nsh(c) = sh.Name Then
    in_nsh = True
    Exit For
    End If
    Next c
    If in_nsh = False Then
    Sheets(sh.Name).Visible = fasle
    ' MsgBox " la feuille. " & sh.Name & " est masquée"
    End If
    Next sh
    End Sub


    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour à tous,

      fasle Le Pingou ? :-)

      au plus court :
      Sub AfficherSh() '***afficher les feuilles
      Dim sh As Worksheet
      For Each sh In Worksheets
      If UCase(Left(sh.Name, 1)) = "S" Then sh.Visible = True
      Next sh
      End Sub

      eric
      0
      1. Thierry_56 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci à vous deux. J'ai opté pour le code le plus court. J'en ai juste créé deux : masquer et afficher
        J'ai juste eu à remplacer True par False
        J'ai apprécié votre aide
        Bonne journée
        0
      2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Hello eriiic,
        J'y avais pensé mais pas certain du nombres de feuilles alors j'ai un peu compliquer. Merci pour le 'false ' de trop.
        Amicale salutations.
        Le Pingou
        0