Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Masquer toutes les cases à cocher via VBA

MatthieuG

XLDnaute Nouveau
Bonjour à tous,

Je suis en train de développer un Excel (forcément ) avec des cases à cocher. J'en ai 150 et je souhaiterais savoir s'il y avait une formule pour masquer / afficher toutes les cases en une seule formule pour éviter ce genre de code :

VB:
Sheets("Mise en service stations ").CheckBox27.Visible = False
Sheets("Mise en service stations ").CheckBox28.Visible = False
Sheets("Mise en service stations ").CheckBox29.Visible = False
Sheets("Mise en service stations ").CheckBox30.Visible = False
Sheets("Mise en service stations ").CheckBox31.Visible = False
Sheets("Mise en service stations ").CheckBox32.Visible = False
Sheets("Mise en service stations ").CheckBox33.Visible = False
Sheets("Mise en service stations ").CheckBox34.Visible = False
Sheets("Mise en service stations ").CheckBox35.Visible = False
Sheets("Mise en service stations ").CheckBox36.Visible = False
Sheets("Mise en service stations ").CheckBox37.Visible = False
Sheets("Mise en service stations ").CheckBox38.Visible = False
Sheets("Mise en service stations ").CheckBox39.Visible = False
Sheets("Mise en service stations ").CheckBox40.Visible = False
Sheets("Mise en service stations ").CheckBox41.Visible = False
Sheets("Mise en service stations ").CheckBox42.Visible = False
Sheets("Mise en service stations ").CheckBox43.Visible = False
Sheets("Mise en service stations ").CheckBox44.Visible = False
Sheets("Mise en service stations ").CheckBox45.Visible = False
Sheets("Mise en service stations ").CheckBox46.Visible = False
Sheets("Mise en service stations ").CheckBox47.Visible = False
Sheets("Mise en service stations ").CheckBox48.Visible = False
Sheets("Mise en service stations ").CheckBox49.Visible = False
Sheets("Mise en service stations ").CheckBox50.Visible = False

Ceci n'est qu'une infime partie puisque j'ai 1000 lignes au final -_-.

Est-ce qu'une formule du genre Allcheckboxes.Visible = True / False existe ?
J'ai cherché sur quelques forums je n'ai pas réussi à trouver cette formule.

Merci d'avance

Matthieu
 

chris

XLDnaute Barbatruc
Bonjour

C'est un non sens de créer autant de cases à cocher : on peut par VBA cocher/décocher directement dans les cellules par clic ou double clic et éviter la création et la gestion de ces cases qui de plus alourdissent la classeur

Reste à faire une boucle de type
VB:
For Each Ccase In Sheets("Mise en service stations ").OLEObjects
    If Ccase.OLEType = 2 Then Ccase.Visible = False
Next Ccase
 

MatthieuG

XLDnaute Nouveau
Merci pour cette réponse rapide.

J'avais effectivement trouvé cette fonction mais je n'avais pas réussi à l'adapter à mon code, je n'avais pas bien compris comment la rédiger.
Je sais bien que ma méthode n'était absolument pas la bonne ^^', celle ci fonctionne merci beaucoup, je l'ai ajustée pour modifier quelques trucs en plus
VB:
For Each Ccase In Sheets("Mise en service stations").OLEObjects
If Ccase.OLEType = 2 Then Ccase.Visible = False
Ccase.Object.Enabled = True
Ccase.Object.Value = False
Next Ccase

Sheets("Mise en service stations ").Valider_station_bouton.Visible = True

Juste après ça, je remet visible mes boutons qui ne le sont plus du coup.

Merci pour ton aide, ceci va GRANDEMENT simplifier mon code

Matthieu
 

MatthieuG

XLDnaute Nouveau
Effectivement il s'agit bien d'active X Controls.

Concernant l'espace c'est normal, le nom de la station est sensible donc je préfère le retirer à chaque fois, j'ai oublié de retirer l'espace cette fois

C'est parfait, merci beaucoup pour cette astuce ! Je vais travailler sur ça.

Signé un débutant qui avance pas à pas sur son fichier en comprenant plein de choses sur VBA depuis 3 semaines

Merci encore

Matthieu
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Puisqu'on parle de toutes les cases à cocher
Et parce que...
[moment Recyclerie]
Repris d'une réponse postée en 2018
VB:
Sub test_I()
'coche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez True
End Sub
Sub test_II()
'décoche tous les types de CheckBox
Application.ScreenUpdating = False
Cochez False
End Sub

Private Sub Cochez(statut As Boolean)
Dim c As Object
With ActiveSheet
    .CheckBoxes.Value = statut
    For Each c In .OLEObjects
    If TypeName(c.Object) = "CheckBox" Then c.Object.Value = statut
    Next c
End With
End Sub
[/moment Recyclerie]

Un petit AllinOne que j'affectionne

NB: Je sais que cela ne masque pas mais cela décoche ou coche.
Ca pourra toujours servir
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…