VBA Question - CheckBox Code
Résolu
vicelow
-
LeRogerTroutman -
LeRogerTroutman -
Bonjour,
Je développe actuellement un formulaire de saisie de questionnaire permettant de compiler aisément et rapidement les réponses à une étude.
Le questionnaire étant assez long je suis trés rapidement arrivé à un nombre important de CheckBox (Plus de 700)
Je souhaite pouvoir, gràce à un command Button, decocher simultanément toutes les checkBox du questionnaire.
Etant novice en VBA, j'ai opté au début pour une solution simple mais qui marche, basée sur 3 lignes.
Pour Exemple:
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
CheckBox1.Value = False
End If
If CheckBox2.Value = True Then
CheckBox2.Value = False
End If
etc... jusqu'à 700
Comme vous pouvez vous en douter cette solution se révèle etre longue et fastidieuse à mettre en oeuvre.Je cherche donc une solution qui me permette de me simplifier la vie et de gagner du temps.
Merci beaucoup par avance de toutes les reponses que vous pourrez bien m'apporter!
Je développe actuellement un formulaire de saisie de questionnaire permettant de compiler aisément et rapidement les réponses à une étude.
Le questionnaire étant assez long je suis trés rapidement arrivé à un nombre important de CheckBox (Plus de 700)
Je souhaite pouvoir, gràce à un command Button, decocher simultanément toutes les checkBox du questionnaire.
Etant novice en VBA, j'ai opté au début pour une solution simple mais qui marche, basée sur 3 lignes.
Pour Exemple:
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
CheckBox1.Value = False
End If
If CheckBox2.Value = True Then
CheckBox2.Value = False
End If
etc... jusqu'à 700
Comme vous pouvez vous en douter cette solution se révèle etre longue et fastidieuse à mettre en oeuvre.Je cherche donc une solution qui me permette de me simplifier la vie et de gagner du temps.
Merci beaucoup par avance de toutes les reponses que vous pourrez bien m'apporter!
A voir également:
- VBA Question - CheckBox Code
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code blocks - Télécharger - Langages
9 réponses
Bonjour,
Essaye avec...
A+
Essaye avec...
Private Sub CommandButton1_Click() Dim Cont As Control For Each Cont In Me.Controls If TypeOf Cont Is MSForms.CheckBox Then Cont.Value = False End If Next Cont End Sub
A+
Merci beaucoup pour la rapidité de ta réponse lermite222.
Le code me renvoie une erreur au niveau de la ligne "For Each Cont In Me.Controls" precisement au niveau de "Me.Controls" avec une erreur type "membre de méthode ou de données introuvable"
Toutes mes checkbox sont situées sur une feuille, je n'ai pas créer de Userform spécifique. L'erreur ne viendrait pas de la localisation des controles?
J'avoue que je nage un peu,
Merci d'avance.
Le code me renvoie une erreur au niveau de la ligne "For Each Cont In Me.Controls" precisement au niveau de "Me.Controls" avec une erreur type "membre de méthode ou de données introuvable"
Toutes mes checkbox sont situées sur une feuille, je n'ai pas créer de Userform spécifique. L'erreur ne viendrait pas de la localisation des controles?
J'avoue que je nage un peu,
Merci d'avance.
Tu doit mettre la routine dans le module de la feuille dans l'événement Clic du bouton.
Si tu tient vraiment à mettre la routine dans un module général tu dit, je modifierai légérement la sub.
Si tu tient vraiment à mettre la routine dans un module général tu dit, je modifierai légérement la sub.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re
j'ai fait plusieurs essais en mettant directement la routine dans la feuille principale sous l'evenement bouton click mais aussi dans un module standard ou un module de classe, cela me renvoie tout de suite une erreur quand je fais le test.
Dans un module standard lorsque j'appel la procedure de la feuille principale par "call" il me renvoie l'erreur "Utilisation incorrect du mot clef me" et dans un module de classe il ya un probleme de referencement avec une erreur type "sub ou function non définie". Dans les 2 cas , j'avais préalablement passé la routine en public sub avec un nom de procédure que j'appel.
Pour le cas de la sheet (feuille de saisie) l'erreur renvoyée reste toujours celle citée dans mon précédent post " me.controls" et j'utilise tout simplement la private sub sous l'evenment click.
Je pense que la solution n'est pas trés loin mais je reste perdu^^
Une petite idée sur le pourquoi de la chose ?
j'ai fait plusieurs essais en mettant directement la routine dans la feuille principale sous l'evenement bouton click mais aussi dans un module standard ou un module de classe, cela me renvoie tout de suite une erreur quand je fais le test.
Dans un module standard lorsque j'appel la procedure de la feuille principale par "call" il me renvoie l'erreur "Utilisation incorrect du mot clef me" et dans un module de classe il ya un probleme de referencement avec une erreur type "sub ou function non définie". Dans les 2 cas , j'avais préalablement passé la routine en public sub avec un nom de procédure que j'appel.
Pour le cas de la sheet (feuille de saisie) l'erreur renvoyée reste toujours celle citée dans mon précédent post " me.controls" et j'utilise tout simplement la private sub sous l'evenment click.
Je pense que la solution n'est pas trés loin mais je reste perdu^^
Une petite idée sur le pourquoi de la chose ?
Bon, procédont par ordre
Tu te met sur la feuille avec lex CheckBox
Tu met la barre d'outils Boite à outils Control
Tu clic sur le Mode création (le bouton reste enfoncé).
Tu doubleclic sur ton commandBouton.
Tu va tomber sur...
Tu copie l'intérieur du code que je t'ai mis pour avoir...
CA DOIT FONCTIONNER
Si ça va toujours pas met un classeur alléger sur Cjoint.com et tu met le lien dans un poste suivant
A+
EDIT:
Possible que ça marche pas avec une feuille, modifier le code comme suit
Private Sub CommandButton1_Click()
Dim Cont As Control
with Sheets("Feuil1") 'adapter au nom de la feuille
For Each Cont In .Controls
If TypeOf Cont Is MSForms.CheckBox Then
Cont.Value = False
End If
Next Cont
End With
End Sub
Tu te met sur la feuille avec lex CheckBox
Tu met la barre d'outils Boite à outils Control
Tu clic sur le Mode création (le bouton reste enfoncé).
Tu doubleclic sur ton commandBouton.
Tu va tomber sur...
Private Sub CommandButton1_Click() End Sub
Tu copie l'intérieur du code que je t'ai mis pour avoir...
Private Sub CommandButton1_Click() Dim Cont As Control For Each Cont In Me.Controls If TypeOf Cont Is MSForms.CheckBox Then Cont.Value = False End If Next Cont End Sub
CA DOIT FONCTIONNER
Si ça va toujours pas met un classeur alléger sur Cjoint.com et tu met le lien dans un poste suivant
A+
EDIT:
Possible que ça marche pas avec une feuille, modifier le code comme suit
Private Sub CommandButton1_Click()
Dim Cont As Control
with Sheets("Feuil1") 'adapter au nom de la feuille
For Each Cont In .Controls
If TypeOf Cont Is MSForms.CheckBox Then
Cont.Value = False
End If
Next Cont
End With
End Sub
C'est bien la manip que j'avais fait des le départ. J'ai mis le fichier allégé sur cjoint si tu veux y jeter un coup d'oeil
https://www.cjoint.com/?kprQfmaICC
Encore merci pour ton aide!
https://www.cjoint.com/?kprQfmaICC
Encore merci pour ton aide!
Ca y est ca marche!
Bizarrement j'ai reçu ton dernier post apres avoir posté mon dernier contenant le lien. J'ai essayé le dernier code avec la boucle et tout marche impec.
Il n'y a pas eu de contretemps , j'ai justement gagné une journée.
Merci encore pour ton aide précieuse!
Bizarrement j'ai reçu ton dernier post apres avoir posté mon dernier contenant le lien. J'ai essayé le dernier code avec la boucle et tout marche impec.
Il n'y a pas eu de contretemps , j'ai justement gagné une journée.
Merci encore pour ton aide précieuse!
Sorry, j'ai confondu avec un UF, voir ce code pour une feuille...
Désolé pour le contretemps mais je connais bien ces fonctions et je n'ai pas fait les tests que je fais habituellement.
A+
Private Sub CommandButton1_Click() Dim Obj As OLEObject 'boucle sur les objets de la Feuil1 For Each Obj In Sheets("Feuil1").OLEObjects 'verifie s'il s'agit d'un CheckBox If TypeOf Obj.Object Is MSForms.CheckBox Then Obj.Object.Value = False End If Next Obj End Sub
Désolé pour le contretemps mais je connais bien ces fonctions et je n'ai pas fait les tests que je fais habituellement.
A+