Case à cocher pour afficher et masquer des feuilles
Bonjour,
Je tente de mettre en place une macro qui permettrait d'afficher et masquer des feuilles via des cases à cocher.
J'ai renommé l'ensemble des feuilles, j'ai fait une feuille qui ressemble à un sommaire avec le nom de chaque feuille + une case à cocher + une mise en forme conditionnelle ( si cellule de la case à cocher =C4*1=0 alors faux =C4*1=1 alors vrai) + la macro suivante :
Sub affichefeuilles()
Application.ScreenUpdating = False
For i = 2 To 103
Select Case Cells(i, 3)
Case Is = False
Sheets(i - 2).Visible = 2
Case Is = True
Sheets(i - 2).Visible = -1
End Select
Next i
Application.ScreenUpdating = True
End Sub
Mon niveau en VBA est faible
merci pour votre aide.
V
Bonjour,
Pouvez-vous nous envoyer votre fichier Excel pour que l'on puisse tester?
Cindy
Bonjour CindyD,
Merci beaucoup pour votre aide.
En pièce jointe un fichier qui donne un aperçu de ce que je souhaite faire...mais qui ne fonctionne pas
Mon fichier final comportera une centaine de feuilles. Je souhaite avoir une feuille principale dans laquelle sont listées mes feuilles par "Nom", associées à une case à cocher: Vrai: Onglet affiché / Faux: Onglet Masqué.
Actuellement, mes cases à cocher permettent d'afficher/masquer mes 3 feuilles...Avec un code en boucle...certainement pas optimal pour gérer une centaine d'onglet....
De plus mon contôle ActiveX ne me permet pas de mettre à jour ma colonne VRAI/FAUX.
Comment je peux faire ça avec mon bout de code...?
Un grand merci:!
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonsoir,
Effectivement, pour gérer la visualisation d'une centaine d'onglets, un code "par checkbox" sera vite ingérable....
En utilisant un module de classe, quelques lignes suffiront
regarde le fichier joint
j'ai conservé le principe de la MEFC du fichier d'origne
les codes sont dans :
- le code "This Workbook" (pour l'initialisation à l'ouverture du fichier)
- le module1 (en cas de réinitialisation)
- le module de classe "Classe 1" (qui comporte le code permettant d'afficher ou non l'onglet, avec la mise à jour en colonne C)
un bouton "reset" permet de réinitialiser le code en cas de plantage, ou d'ajout de checkbox
Mef, j'ai utilisé la fonction Trim, car il y a un espace après le nom de l'onglet dans la colonne B
Bonne soirée
bonjour André,
bonjour cousinhub,
Merci beaucoup pour vos contributions et vox explications.
Il n'y a jamais de problème, que des solutions...J'avais tourné mon problème différemment et j'ai trouvé une solution.
Je vous remercie pour vos explications, je les garde précieusement.
pour ma part, j'ai créer un bouton qui appelle un UserForm. Dans ce UserForm j'ai créé des CheckBox qui me permettent de sélectionner les onglets que je souhaite afficher...
Bon niveau du code...c'est très redondant, mais n'ayant aucune compétence et n'y comprenant pas grand chose, je suis contente du résultat
2 boutons: L'un faisant appelle au UserForm pour Horus. L'autre faisant appelle au UserForm pour la Synthèse.
Code sur le bouton appelant le userform:
Sub Bouton1_Cliquer()
UserForm1.Show
End Sub
Sub Bouton2_Cliquer()
UserForm2.Show
End Sub
Un troisième bouton pour effacer les onglets...Je prévois le coup avec ma centaine
Ensuite, dans chaque UserForm un code presque similaire, répéter par chaque nom d'onglets... (49 horus + 49 synthèses):
Private Sub CommandButton1_Click()
With Sheets("Sélection")
If CheckBox1 = True Then
Worksheets("Horus Afrique").Visible = True
Else
Worksheets("Horus Afrique").Visible = False
End If
End With
Unload UserForm1
End Sub
Enfin, j'ai rajouté une possibilité dans l'UserForm, celle de pouvoir tout sélectionner en un clic avec le code suivant:
Private Sub CommandButton2_Click() 'Tout cocher
Dim i As Integer
For i = 1 To 1
Me.Controls("checkbox" & i).Value = True
Next i
End Sub
je reste à votre écoute si on peut alléger, mais en tous les cas ça fonctionne
Bon week end,