Question avec OptionButton

Résolu
jojo255 Messages postés 5 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 9 août 2006 - 9 août 2006 à 22:52
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 10 août 2006 à 00:19
Bonjour,

Je suis nouveau et je débute sous VBA.

Sur une feuille excel j'ai créé 18 boutons OptionButton.
Ce que je souhaite c'est de savoir parmi les 18, lequel sera sélectionné (cad que value = true)

Pour l'instant j'utilise un gigantesque if qui test tous mes OptionButton pour vérifier lequel a comme valeur true, mais c'est assez en VBA

Merci pour vos lumieres

10 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
9 août 2006 à 23:44
Ca y'est j'ai trouvé :

Sub Test()

Dim ctl As OLEObject
Dim Saisie As String
'*** pas en Integer : c'est pour y placer des nombres

For Each ctl In ActiveSheet.OLEObjects
If TypeOf ctl.Object Is MSForms.OptionButton Then
If ctl.Object.Value True Then Saisie ctl.Object.Caption: MsgBox Saisie
'*** si le ctl (optionbutton) est coché, on place dans Saisie son caption puis
' affichage dans une message box
End If
Next ctl

End Sub
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 août 2006 à 23:00
Salut,

essaie cette boucle :

Dim ctl As Control

For Each ctl In Me.Controls
If TypeName(ctl) = "OptionButton" Then
If ctl.Value = True Then MsgBox ctl.Name & " est coché !", vbOKOnly
End If
Next ctl

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
0
jojo255 Messages postés 5 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 9 août 2006
9 août 2006 à 23:09
j'ai ce message d'erreur :
Membre de méthode ou de donné introuvable.

une petite précision, une fois l'optionButton true trouvé, je souhaite récupérer sa donnée se trouvant dans caption, et la mettre dans une nouvelle varaiable.

Le nom de chacun de mes OptionButton est OptionButton1, OptionButton2, ... , OptionButton16
si j'adapte ton prog, a ce que je veux faire, est ce correct de l'écrire ainsi

Dim ctl As Control
Dim Saisie As Integer

For Each ctl In Me.Controls
  If TypeName(ctl) = "OptionButton" Then    If ctl.Value True Then Saisie.value ctl.Name
  End If
Next ctl
0
jojo255 Messages postés 5 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 9 août 2006
9 août 2006 à 23:17
j'ai oublié de dire que l'erreur est à cette ligne

For Each ctl In Me.Controls

Je pense que c'est Controls qui merdouille
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
9 août 2006 à 23:18
Humm t'es en VBA Excel ?
Je viens de faire le test et ça fonctionne parfaitement.

Quelques modifs :

Private Sub CommandButton1_Click()
Dim ctl As Control
Dim Saisie As String
'*** pas en Integer : c'est pour y placer des nombres

For Each ctl In Me.Controls
If TypeName(ctl) = "OptionButton" Then
If ctl.Value True Then Saisie ctl.Caption: MsgBox Saisie
'*** si le ctl (optionbutton) est coché, on place dans Saisie son caption puis
' affichage dans une message box
End If
Next ctl

End Sub

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 août 2006 à 23:24
"For Each ctl In Me.Controls

Je pense que c'est Controls qui merdouille"

=> moi je pense que c'est le Me. La procédure que je t'ai donné se trouve t-elle bien dans le UserForm où sont contenus les OptionButton ?
Si ce n'est pas le cas, remplace Me par le nom du UserForm en question.


@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
0
jojo255 Messages postés 5 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 9 août 2006
9 août 2006 à 23:26
je n'ai pas fais ca sur un Useform, mais directement sur la feuille Excel

merci de ton aide
0
jojo255 Messages postés 5 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 9 août 2006
9 août 2006 à 23:53
Chapeau, un vrai pro
merci bcp, ca correspond tout a fait a ce que je voulais faire
Bravo
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 août 2006 à 00:10
Mortalino, j'allais justement te sugérer l'utilisation de TypeOf, que celle de TypeName ^^
content de voir que tu as trouvé ça tout seul :p

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 août 2006 à 00:19
Merci Rey,

je reconnais qu'en UserForm, j'ai tendance à utiliser TypeName.
Je vais essayer de prendre l'habitude d'utiliser TypeOf !

D'ailleurs, le TypeOf passe je pense par la classe de l'objet, mais concernant le TypeName, qu'en est il ?

Encore merci ;)
0
Rejoignez-nous