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 :D) 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 :D

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 :p

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

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T