Si une check box sélectionnée alors sélectionner

Bonjour le forum,

J'utilise une kyrielle de checkbox dans un userform de choix d'impression.

Voici le fonctionnement en résumé :

Je vérifie que les fichiers existent et si ces derniers existent je rends :

CheckBox.enabled = True

CheckBox.visible = True

Si bien que suivant les cas je peux avoir 3 ou plus checkBox "sélectionnables" et l'utilisateur clique sur celles dont il souhaite une impression.

Cependant, je souhaiterais ajouter une dernière checkbox qui permet à l'utilisateur via un seul clic de sélectionner toutes les CheckBox qui sont enabled et Visible dans mon userform.

J'ai tenté une boucle For Each .... next mais sans succés.

Merci de votre aide.

Bonjour,

essaie ceci:

For Each obj In Me.Controls
     If Left(obj.Name, 5) = "Check" Then
         If obj.Enabled And obj.Visible Then obj.Value = 1
     End If
Next obj

La boucle regarde le nom de tous les controles du UserForm, si celui-ci commence par Check, on teste ensuite si l'objet est enabled et visible. Si oui on le coche.

Bonjour Math,

Toujours un réel plaisir de voir tes réponses pour m'aider.

j'ai tapé ça pour le code:

Private Sub ImpressionToutes_OnClick()

For Each obj In Me.Controls

If Left(obj.Name, 5) = "Check" Then

If obj.Enabled And obj.Visible Then obj.Value = 1

End If

Next obj

End Sub

Mais ça ne marche pas.

Je veux lui dire si je clique sur la case d'option qui s'appelle ImpressionToutes alors tu sélectionnes toutes celles qui sont Visibles et enabled.

Je suis sur qu'il faut ajouter un truc du style On click as.... quelque chose mais ça je ne sais pas faire.

Merci de ton aide.

Comment s'appelle tes checkbox qui vont être coché par la procédure, moi j'ai pris pour acquis qu'elles s'appellaient "CheckBoxQuelquechose". Si elles ont un autre nom qui ne commence pas par Check, faudrait adapter le code. Tu utilises le bon évènement pour lancer ton code, le problème doit être ailleurs. Par contre on devrait ajouter un test pour activer le code seulement quand on coche et non quand on décoche

if ImpressionToutes.value = 1 then

Une autre solution est de mettre seulement tes checkbox dans un controle frame, et ensuite vérifier seulement les controles qui sont dans le frame :

For Each obj In Me.Frame1.Controls
            If obj.Enabled And obj.Visible Then obj.Value = 1
Next obj

on évite la vérification par le nom, qui peut être hasardeuse.

C'est curieux, car je viens d'exécuter le code en pas à pas avec F8.

Le Userform apparait, il fait tout ce que je lui demande (il attribue la valeur enabled à chaque CheckBox si le fichier la reliant existe) mais lorsque je clique sur la check box qui s'appelle ImpressionToutes il ignore la procédure !!!

Private Sub ImpressionToutes_OnClick()

If ImpressionToutes.Value = True Then

For Each obj In Me.Frame1.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

For Each obj In Me.Frame2.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

For Each obj In Me.Frame3.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

For Each obj In Me.Frame4.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

For Each obj In Me.Frame5.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

For Each obj In Me.Frame6.Controls

If obj.Enabled And obj.Visible Then obj.Value = 1

Next obj

End If

Bonjour,

Bonjour, Math

Marky, ce qui m'étonne c'est :

Private Sub ImpressionToutes_OnClick() 

LE "On"collé à "Click" me gêne....

soit c'est :

Private Sub ImpressionToutes_On_Click()

soit :

Private Sub ImpressionToutes_Click()

selon le nom de ton checkbox....

Merci de nosu rejoindre cousin hub,

Bah j'ai tout testé et ce qui fonctionne c'est cela :

Private Sub ImpressionToutes_Click()

For Each obj In Me.Controls

If Left(obj.Name, 10) = "Impression" Then

If obj.Enabled And obj.Visible Then obj.Value = True

End If

Next obj

End Sub

Merci encore pour votre aide, tous les jours je me dis que je deviens moins nul en VB mais à chaque fois je bute mais j'essaie malgré tout...

12vu-vehicules.xlsm (700.14 Ko)

Re-,

avec ce code, tous les checkbox prennent la valeur de ton chk "ImpressionToutes" :

Private Sub ImpressionToutes_Click()
Dim Ctr As Control
For Each Ctr In Me.Controls
    If TypeOf Ctr Is MSForms.CheckBox Then
        If Ctr.Visible And Ctr.Enabled Then Ctr.Value = ImpressionToutes.Value
    End If
Next Ctr
End Sub

Ainsi, si tu valides, ils sont tous validés, si tu dé-valides, ils sont tous dé-validés

Rechercher des sujets similaires à "check box selectionnee selectionner"