cs_observatoire
Messages postés75Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention23 août 2006
-
22 juin 2006 à 14:15
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
22 juin 2006 à 16:01
Bonjour,
Je souhaite définir si mon groupe d'option est activé (au moins une option cochée) ou non (aucune option cochée, avec les cases en grisé).
Merci
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 juin 2006 à 14:29
Salut, essaie ça :
Sub Verification_Etat_OptionButtons()
Dim ctl As Control
' Frame1 c'est le groupe de contrôles
For Each ctl In Frame1.Controls
If TypeName(ctl) = "OptionButton" Then 'on ne vérifie que les OptionButtons If ctl.Value True Or ctl.Value Null Then 'détermine la condition
GoTo Saut
End If
End If
Next ctl
MsgBox "AUCUN OptionButton a la valeur True Ou Null"
Exit Sub
Saut:
MsgBox "Au moins un OptionButton a la valeur True Ou Null"
cs_observatoire
Messages postés75Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention23 août 2006 22 juin 2006 à 14:56
désolée, ça n'a pas trop l'air de marcher : je ne suis pas sûre (en tout cas vu que je suis sur VBA Access) que ctl.value soit possible. D'autre part, "Null" c'est bien pour le cas où aucune option n'est cochée? Dans ce cas, d'après ton programme je ne peux pas différencier "aucune option cochée" et "au moins une option cochée"
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 juin 2006 à 15:04
Quand tu écris ctl. là il te propose un tas de propriété mais pas Value, certe, mais t'inquiète pas, il est pris en compte.OptionButton.Value True > c'est qu'il est cochéOptionButton.Value False > c'est qu'il n'est pas cochéOptionButton.Value Null > il est coché mais grisé
Mais tu n'as qu'à copier ma procédure dans ton Module de ta Form et t'as juste à remplacer dans cette ligne :
For Each ctl In Frame1.Controls
^ Frame1 c'est le nom du groupe de contrôles que j'ai utilisé pour faire le test mais met lui le nom que tu as déterminé.
C'est tout comme changement
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 juin 2006 à 15:10
Ca doit marcher !
En français, mon code veut dire ça :
On vérifie Tous les contrôles qui se trouvent dans ton groupe de contrôles
Si le contrôle est un OptionButton
Ben alors on vérifie si il est coché ou coché / grisé
Si c'est le cas on saute à la fin de la procédure pour le message
Fin If
Fin If
On continue la boucle jusquà ce que tous les contrôles ont été vérifié
cs_observatoire
Messages postés75Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention23 août 2006 22 juin 2006 à 15:26
Ok
Je ne veux pas te froisser!
Mais j'ai bien recopié ton code, en changeant uniquement "Frame1", et sur la ligne "If ctl.Value = True Or ctl.Value = Null Then" il me met le message "Expression sans paramètre". Je te jure ce n'est pas de la mauvaise volonté! Une autre fois, je ne sais plus avec quelle combinaison, il me mettait effectivement un message, mais "AUCUN OptionButton a la valeur True Ou Null" alors que j'avais un bouton de sélectionné.
J'ai fini par essayer le code suivant, il a l'air de marcher, mais c'est vrai que je ne suis pas sûre que ça idenfie le fait que l'option soit sélectionnée ou non, mais plutôt qu'on lui ait affecté le chiffre 1 ou non :
Sub Verification_Etat_OptionButtons()
Dim ctl As Control
' Frame1 c'est le groupe de contrôles
For Each ctl In Cadre11.Controls
If TypeName(ctl) = "OptionButton" Then 'on ne vérifie que les OptionButtons
If (ctl.OptionValue = 1) Then 'détermine la condition
GoTo Saut
End If
End If
Next ctl
MsgBox "AUCUN OptionButton a la valeur True"
Exit Sub
Saut:
MsgBox "Au moins un OptionButton a la valeur True "
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 juin 2006 à 16:01
Rassure toi, tu ne me froisses pas. C'est juste que je viens de faire le test et ça fonctionne. (chez moi)
Par contre, tu as mis "If (ctl.OptionValue = 1) Then" en fait, je connais pas OptionValue
D'ailleurs il ne m'est pas proposé dans les propriétés. Mais c'est peut-être un contrôle sur un formulaire Access et non VBA. c'est pour cela qui doit y avoir une légère différence de syntaxe.
C'est donc possible qu'OptionValue te le prenne en compte.