IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Afficher/Masquer Onglet via un seul bouton


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Août 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 19
    Par défaut Afficher/Masquer Onglet via un seul bouton
    Bonjour à tous,

    Je travaille sous Excel 2013.

    Je souhaite créer une macro un peu plus évoluée que celle que j'utilise actuellement pour afficher/masquer certains onglets de mon classeur.

    Pour l'instant, je passais par une macro qui nommée mes feuilles du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Sheets("NOM DE LA FEUILLE").Visible = True Then
    Sheets("NOM DE LA FEUILLE").Visible = False
    Else
    Sheets("NOM DE LA FEUILLE").Visible = True
    End If

    A présent, je souhaite faire une macro qui ne nomme pas le nom de mes feuilles au cas où une personne utilisant le fichier change le nom des feuilles. De plus, je veux que, via un seul bouton, je puisse afficher/masquer les feuilles.

    J'ai écrit cela sur deux macros pour l'instant mais je n'arrive pas à les réunir en une seule. De plus, je nomme quand même les feuilles "SYNTHESE" et "Param" dans ma macro. Du coup, je dois espérer que personne ne change le nom de ces feuilles:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub MasquerOnglets()
     
    Dim Onglets As Worksheet
     
            For Each Onglets In Sheets
     
                If Onglets.Name <> "SYNTHESE" And Onglets.Name <> "Param" Then
     
                Onglets.Visible = False
     
                End If
     
            Next Onglets
     
     
    End Sub

    --------------------------------------------------------------------------------------


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub AfficherOnglets()
     
     
    Dim Onglets As Worksheet
     
        For Each Onglets In Sheets
     
        If Onglets.Name <> "SYNTHESE" And Onglets.Name <> "Param" Then
     
     
        Onglets.Visible = True
     
        End If
     
    Next Onglets
     
     
     
    End Sub



    Dans l'attente de vous lire,


    Merci à vous,

    Laurent

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par laurentdx59 Voir le message
    Pour l'instant, je passais par une macro qui nommée mes feuilles du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Sheets("NOM DE LA FEUILLE").Visible = True Then
        Sheets("NOM DE LA FEUILLE").Visible = False
    Else
        Sheets("NOM DE LA FEUILLE").Visible = True
    End If
    Plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("NOM DE LA FEUILLE").Visible = Not Sheets("NOM DE LA FEUILLE").Visible
    J'ai écrit cela sur deux macros pour l'instant mais je n'arrive pas à les réunir en une seule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ClicClacOnglets()
        Dim Onglets As Worksheet
        For Each Onglets In Sheets
            If Onglets.Name <> "SYNTHESE" And Onglets.Name <> "Param" Then Onglets.Visible = Not Onglets.Visible
        Next Onglets
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Août 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 19
    Par défaut
    Bonjour Menhir,

    Merci pour ce retour. Cela fonctionne très bien.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu pourrais modifier les codename de tes feuilles (plus difficile à modifier par l'utilisateur du classeur car il doit entrer dans le code). Ton code est alors indépendant du nom de l'onglet et tu évites les problèmes en cas de modification du nom par l'utilisateur...

    Nom : 2019-08-01_131205.png
Affichages : 2272
Taille : 27,8 Ko


    Tu peux alors travailler directement avec l'objet worksheet voulu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shdata.Visible = not shdata.visible

    Tu peux aussi utiliser le codename (le nom vba) dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ViewHideSheets()
      Dim sh As Worksheet
     
      For Each sh In Worksheets
        If sh.CodeName <> "shData" Then sh.Visible = Not shData.Visible
      Next
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Août 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 19
    Par défaut
    Oui j'y avais pensé également finalement.

    Merci quand même pour ce retour !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/08/2017, 22h33
  2. [XL-2003] Afficher/Masquer dynamiquement via un bouton
    Par lexus92 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/03/2012, 16h42
  3. masquer/afficher une range via bouton
    Par marcoole dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2011, 21h22
  4. [XL-2003] afficher/masquer zone de lignes via bouton "+" / "-"
    Par easyhour dans le forum Excel
    Réponses: 2
    Dernier message: 30/11/2010, 09h21
  5. [AC-2007] Afficher / Masquer masque de saisie avec bouton de commande
    Par klash384 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2010, 00h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo