[VBA Access] groupe d'option ou de cases à cocher

cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006 - 22 juin 2006 à 14:15
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 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

7 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"

End Sub






@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>

  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 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"

@+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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


















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>

  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006
22 juin 2006 à 15:04
apparement c'est parce que je suis dans un groupe d'option que "ctl.value" ne doit pas marcher...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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é

@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 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 "


End Sub
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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.

A tester, ça mange pas de pain.

@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
Rejoignez-nous