OVH Cloud OVH Cloud

comment tester 3 OptionButton

25 réponses
Avatar
dav
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav

10 réponses

1 2 3
Avatar
LE TROLL
Salut, excellent :o)

Avec une ligne de moins, mais moin académique:

If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...

"dav" a écrit dans le message de
news:415c3cb9$0$3681$
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav


Avatar
Jérôme VERITE
Bonjour s'il y a un traitement à effectuer uniquement pour l'optionbutton
selectionné, il est possible de le détecter comme suit

select case true
case option(1).value
' traitement si option 1 sélectionné
case option(2).value
' traitement si option 2 sélectionné
...
end select

Jérôme

"LE TROLL" <le a écrit dans le message de news:

Salut, excellent :o)

Avec une ligne de moins, mais moin académique:

If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...

"dav" a écrit dans le message de
news:415c3cb9$0$3681$
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav






Avatar
Patrice Henrio
If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...

Et même
If Option(1) then Call1 else Call2
...
"LE TROLL" <le a écrit dans le message de news:

Salut, excellent :o)

Avec une ligne de moins, mais moin académique:

If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...

"dav" a écrit dans le message de
news:415c3cb9$0$3681$
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav






Avatar
LE TROLL
Oh yes, et même:

If Option(0) then Call 1 else Call 2: If Option(1) then Call 3 else Call 4:
If Option(2) then Call 5 else Call 6

Une seule ligne :o)
-------------

"Patrice Henrio" a écrit dans le message de
news:OCIT$
If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...

Et même
If Option(1) then Call1 else Call2
...
"LE TROLL" <le a écrit dans le message de news:

> Salut, excellent :o)
>
> Avec une ligne de moins, mais moin académique:
>
> If Option1(1).Value= True Then Call...
> If Option1(1).Value= False Then Call...
> If Option1(2).Value= True Then Call...
> If Option1(2).Value= False Then Call...
> If Option1(3).Value= True Then Call...
> If Option1(3).Value= False Then Call...
>
> "dav" a écrit dans le message de
> news:415c3cb9$0$3681$
>> j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
>> coché.....
>>
>> j'ai envisagé :
>>
>> dim i as integer
>> for i = 0 to 2
>> select case Option1(i).Value
>> case true
>>
>> case false
>> end select
>> next
>>
>> qu'en pensez vous ? y'a mieux ?
>> merci,
>> dav
>
>




Avatar
geo
ou encore :

if option(1) then
' cas 1

elseif option(2) then
'cas 2

elseif option(3) then
'case 3

else
'case 4

end if







Géo
Avatar
Pierre Alexis [MVP]
Salut,

Tu as écrit :

Avec une ligne de moins, mais moin académique:

If Option1(1).Value= True Then Call...
If Option1(1).Value= False Then Call...
If Option1(2).Value= True Then Call...
If Option1(2).Value= False Then Call...
If Option1(3).Value= True Then Call...
If Option1(3).Value= False Then Call...



Tu fais beaucoup de tests en trop. Puisque il est certain qu'avec les options
button une seule option seulement sera sélectionnée, une fois que tu en as
testé un tu ne dois plus tetser les autres.

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
LE TROLL
Ben en plus tu n'as pas tort :o)


"Pierre Alexis [MVP]" a écrit dans le message de
news:
Salut,

Tu as écrit :

> Avec une ligne de moins, mais moin académique:
>
> If Option1(1).Value= True Then Call...
> If Option1(1).Value= False Then Call...
> If Option1(2).Value= True Then Call...
> If Option1(2).Value= False Then Call...
> If Option1(3).Value= True Then Call...
> If Option1(3).Value= False Then Call...

Tu fais beaucoup de tests en trop. Puisque il est certain qu'avec les


options
button une seule option seulement sera sélectionnée, une fois que tu en as
testé un tu ne dois plus tetser les autres.

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/




Avatar
CoolCubix
Bonjour,

Ta solution n'est pas mal mais elle continue de tester les autres. Voici un
code plus simple d'accès car c'est une simple procédure à appeler. De même
l'emploi d'un Select Case est inutile pour un résultat Boolean.

Code :

Public Function LequelEstCoche()
Dim i as Integer
For i = 0 To 2 'Remplacer 2 par le nombre de OptionButton
If OptionButton.Item(i).Value = True Then 'Remplacer OptionButton
par le nom des contrôles
LequelEstCoche = i
Exit Function
End If
Next
End Function

Utilisation :

Placer le code dans la Form ou dans un Module.
La fonction renvoie la propriété Index du OptionButton coché.
Remplacer 2 par le nombre de OptionButton.
Remplacer OptionButton par le nom des contrôles


;-D
--
C
C U
O B
O !
L X

"dav" a écrit dans le message de
news:415c3cb9$0$3681$
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav


Avatar
Patrice Henrio
Pourquoi encore et toujours IF <BOOLEEN>=TRUE THEN
alors qu'il est si simple (et plus correct d'écrire) d'écrire
IF <BOOLEEN> THEN

De plus il me semble que la valeur par défaut du optionbutton est value donc
on doity pouvoir tester directement if optionbutton(i) then
Sinon c'est vrai que ton code est préférable car plus rapide
"CoolCubix" a écrit dans le message de news:

Bonjour,

Ta solution n'est pas mal mais elle continue de tester les autres. Voici
un
code plus simple d'accès car c'est une simple procédure à appeler. De même
l'emploi d'un Select Case est inutile pour un résultat Boolean.

Code :

Public Function LequelEstCoche()
Dim i as Integer
For i = 0 To 2 'Remplacer 2 par le nombre de OptionButton
If OptionButton.Item(i).Value = True Then 'Remplacer OptionButton
par le nom des contrôles
LequelEstCoche = i
Exit Function
End If
Next
End Function

Utilisation :

Placer le code dans la Form ou dans un Module.
La fonction renvoie la propriété Index du OptionButton coché.
Remplacer 2 par le nombre de OptionButton.
Remplacer OptionButton par le nom des contrôles


;-D
--
C
C U
O B
O !
L X

"dav" a écrit dans le message de
news:415c3cb9$0$3681$
j'ai 3 OptionButton sur ma feuille et je voudrais savoir lequel est
coché.....

j'ai envisagé :

dim i as integer
for i = 0 to 2
select case Option1(i).Value
case true

case false
end select
next

qu'en pensez vous ? y'a mieux ?
merci,
dav









Avatar
Jean-Marc
"Patrice Henrio" a écrit dans le message de
news:%


Hello,

Pourquoi encore et toujours IF <BOOLEEN>=TRUE THEN
alors qu'il est si simple (et plus correct d'écrire) d'écrire
IF <BOOLEEN> THEN



ce n'est ni "plus" ni "moins" correct. Ce n'est pas non plus
"plus" ou "moins" simple. C'est une habitude, c'est tout.

On notera au passage que le code généré est exactement le
même, qu'on mette le " = TRUE " ou pas. Le compilateur
est un grand garçon, qui sait se débrouiller tout seul.


De plus il me semble que la valeur par défaut du optionbutton est value


donc
on doity pouvoir tester directement if optionbutton(i) then



Ca par contre c'est un **mauvais** conseil.

1/ Programmer, ce n'est pas seulement saisir du code qui
fonctionne: c'est aussi écrire du code lisible
par un tiers. Utiliser la propriété par défaut d'un
composant nuit gravement à la lisibilité, en plus d'être
une source non négligeable d'erreurs. Ces erreurs seront
en plus difficiles à détecter.

2/ Ca ne change rien à la vitesse. J'ajouterais pour faire
bonne mesure que si on en est réduit à faire ce genre de
bidouilles malsaines et douteuses pour espérer grapiller
d'illusoires millisecondes, alors on doit revoir en
profondeur son implémentation. Le performances ne se
gagnent JAMAIS en jouant avec la syntaxe du langage.

L'utilisation d'artifices n'est jamais une bonne idée:
on sacrifie la lisibilité à la flemmardise du clavier :-(

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
1 2 3