Tester valeur d'un OptionButton dans une boucle

ailete

XLDnaute Nouveau
Bonsoir,

j'ai un parcours d'OptionButton avec des tests sur leur Value.

Code:
Dim ctrl as Control
For each ctrl in me.Controls
If Ctrl.Value = True Then ...
Next

Seulement le problème est qu'une erreur apparaît, il me dit que l'attribut Value ne peut pas être utilisé avec un objet de type "Control".

Avez-vous la solution pour que je puisse tester si le bouton est coché?

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Bonsoir

Voici un façon de faire

Code:
Private Sub CommandButton1_Click()
Dim c As Control
For Each c In Me.Controls
If TypeOf c Is MSForms.OptionButton Then
If c Then
MsgBox c.Caption
End If
End If
Next c
End Sub

EDITION: Bonsoir Papou ;)
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Bonsoir ailete,

Dans le cas d'utilisation d'une boucle For Each ... Next, tu n'as pas besoin de déclarer la variable, elle est automatiquement considérée comme un objet (même si tu as déclaré Option Explicit). Tu dois donc simplement supprimer la 1ère ligne de ton code.

Cordialement.

Edit : Bonsoir Staple1600
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Bonjour à tous,

@Papour:)
Dans le cas d'utilisation d'une boucle For Each ... Next, tu n'as pas besoin de déclarer la variable, elle est automatiquement considérée comme un objet (même si tu as déclaré Option Explicit).

chez moi sous 2003, si non déclarée avec "Option Explicit" provoque une erreur de compilation, variable non définie...

bonne journée
@+
 

Papou-net

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Bonjour à tous,

@Papour:)


chez moi sous 2003, si non déclarée avec "Option Explicit" provoque une erreur de compilation, variable non définie...

bonne journée
@+

Bonjour à tous,

Bonjour Pierrot93,

Chez moi, sous XL2003 également, ça fonctionne sans erreur.

Si tu veux bien tester, je te joins un fichier exemple.

Bonne journée.

Cordialement.
 

Pièces jointes

  • Ailete.xls
    29 KB · Affichages: 81
  • Ailete.xls
    29 KB · Affichages: 95
  • Ailete.xls
    29 KB · Affichages: 103

Pierrot93

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re,

@Papou:)
ta variable est déclarée dans ton fichier.. et pas d'option explicit dans le module de l'usf... pas du tout comprendre moi... :)
Code:
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
  If ctrl.Value = True Then MsgBox ctrl.Caption
Next
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re,

et si je modifie ainsi :
Code:
Option Explicit
Private Sub CommandButton1_Click()
For Each ctrl In Me.Controls
  If ctrl.Value = True Then MsgBox ctrl.Caption
Next
End Sub

message d'erreur, variable non définie....
 

laetitia90

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

bonjour les amis:):):)


si pas option explicit pas oblige de declarer les variables
dans ce cas pose pas de pb...
mais dans une macro "basique" si pas declare explicitement toutes les variables elles sont considerees comme du variant ce qui peut poser des pb.. de lenteur execution ect..

en fin de compte option explicit impose seulement de declarer les variables ce qui est trés bien pour les personnes qui debute en vba
 

Papou-net

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re Pierrot93,

Effectivement, j'ai laissé la déclaration de la variable ctrl.

Mais je persiste et signe : après l'avoir supprimée, ça fonctionne toujours aussi bien chez moi.

Par contre, j'ai bien déclaré Option Explicit, mais dans Module1 au lieu de UserForm1.

Je te renvoie le fichier corrigé.

Cordialement.
 

Pièces jointes

  • Ailete.xls
    26.5 KB · Affichages: 80
  • Ailete.xls
    26.5 KB · Affichages: 81
  • Ailete.xls
    26.5 KB · Affichages: 108

Pierrot93

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re,

Par contre, j'ai bien déclaré Option Explicit, mais dans Module1 au lieu de UserForm1.
Aarf, ceci explique cela, il aurait fallut le placer dans le module de l'usf pour que cela eut un effet....

cf, extrait de l'aide vba :
Option Explicit, instruction

Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes les variables de ce module.

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re,
Bonjour Laetitia:)
juste pour saluer Laetitia:) que je n'avois point vu tout à l'heure... désolé...

Edition :
en fin de compte option explicit impose seulement de declarer les variables ce qui est trés bien pour les personnes qui debute en vba

Aarf perso, je le met systèmatiquement... mais je suis un grand débutant:):)...
 

Papou-net

XLDnaute Barbatruc
Re : Tester valeur d'un OptionButton dans une boucle

Re : Laetitia,

Bonjour à toi,

Merci pour cette précision qui, je l'avoue, m'échappai encore malgré une intense utilisation de VBA.

Re : Pierrot93,

Aarf perso, je ne le mets jamais... mais je suis un grand fainéant !

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 884
Membres
103 982
dernier inscrit
krakencolas