Un client m’a posé la question suivante il y a quelques semaines :
“J’utilise un classeur avec de très nombreux onglets que je masque car ils ne doivent pas être visibles. Mais parfois j’ai besoin de les faire réapparaître pour effectuer quelques modifications mais c’est super long… Je dois faire ça onglet par onglet. Idem pour masquer tous les onglets d’un coup… N’y a t-il pas un moyen d’aller plus vite ?”
C’est vrai que Excel n’a pas pour le moment de fonction native pour faire ça. On va devoir passer par un petit peu de code VBA pour ça.
Afficher l’onglet Développeur
Pour travailler dans l’éditeur Visual Basic, rendez-vous dans le menu Outil / Macro / Visual Basic Editor.
Vous pouvez aussi cliquer directement sur le bouton Visual Basic de l’onglet Développeur (si vous l’avez affiché).
Créer la macro pour Afficher tous les onglets
Ouvrez votre éditeur Visual Basic et copiez collez ces quelques lignes de code dans ThisWorkbook .
Ce code passe en revue toutes les feuilles du classeur et passe le statut “visible” à “true” (vrai).
Sub AfficheOnglets()
Dim Onglets As Worksheet
For Each Onglets In Worksheets
Onglets.Visible = True
Next Onglets
End Sub
Créer la macro pour Masquer tous les onglets
On pourrait être tenté de prendre le même code et de changer la valeur True (vrai) par False (faux). Mais vous allez prendre une belle erreur car, dans Excel, il n’est pas possible de masquer TOUS les onglets. Il doit y en avoir au minimum UN d’affiché.
Ouvrez votre éditeur Visual Basic et ajoutez ce code dans ThisWorkbook .
Ce second code passe en revue toutes les feuilles du classeur et passe le statut “visible” à “False” (FAUX) SAUF pour la feuille nommée Feuil1. Evidemment il faudra adapter le code pour mettre le nom de votre première feuille, celle qui ne devra jamais être masquée.
Sub MasqueOnglets()
Dim Onglets As Worksheet
For Each Onglets In ThisWorkbook.Worksheets
With Onglets
If Not .Name = "Feuil1" Then .Visible = False
End With
Next
End Sub
Le code complet pour les deux macros est donc :
Sub AfficheOnglets()
Dim Onglets As Worksheet
For Each Onglets In Worksheets
Onglets.Visible = True
Next Onglets
End Sub
Sub MasqueOnglets()
Dim Onglets As Worksheet
For Each Onglets In Worksheets
With Onglets
If Not .Name = "Feuil1" Then .Visible = False
End With
Next
End Sub
super!!!
Merci