Boutons d'option et VBA

Le
DoMi
Bonjour,

Je voudrais modifier par VBA la valeur de boutons d'option situés sur
une feuille de calcul, mais je ne sais pas comment les désigner.

Quelqu'un peut-il m'aider ?

Merci !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CAP2
Le #16642081
Salut,

mettons que ton bouton soit sur une feuille nommée "Test", et que ton bouton
s'appelle "monbouton" (pour le nommer, tu passes en mode création, tu
cliques-droit dessus, Propriétés, et tu changes la propriété Name. Ici donc,
j'ai choisi monbouton...

Puis, pour changer sa valeur par VBA (ici pour cocher) :

Worksheets("Test").monbouton.Value = True

Ca marche ?

CAP2

"DoMi"
Bonjour,

Je voudrais modifier par VBA la valeur de boutons d'option situés sur
une feuille de calcul, mais je ne sais pas comment les désigner.

Quelqu'un peut-il m'aider ?

Merci !
Jacky
Le #16642771
Bonjour,
Regarde ici
http://www.cijoint.fr/cjlink.php?file=cj200808/cijTBAfGen.xls

--
Salutations
JJ


"DoMi"
Bonjour,

Je voudrais modifier par VBA la valeur de boutons d'option situés sur
une feuille de calcul, mais je ne sais pas comment les désigner.

Quelqu'un peut-il m'aider ?

Merci !
DoMi
Le #16646511
Oui, ça, c'est facile !
J'étais fatigué hier, et ma question était incomplète... (il faut d ire
que quand on est devant son PC à 4 heures du matin, c'est normal qu'on
ne soit pas très frais dans la journée !)

Donc, la question complète, c'est : j'ai 80 OptionButtons sur ma
feuille, et dans le but de leur attribuer leur valeur dans une boucle,
je voudrais que leur numéro d'ordre (OptionButton1 à OptionButton80)
soit remplacé par une variable...

Bon, maintenant, il est 5 h, je vais me recoucher...


On 27 août, 17:59, "CAP2"
Salut,

mettons que ton bouton soit sur une feuille nomm e "Test", et que ton bou ton
s'appelle "monbouton" (pour le nommer, tu passes en mode cr ation, tu
cliques-droit dessus, Propri t s, et tu changes la propri t Name. Ici don c,
j'ai choisi monbouton...

Puis, pour changer sa valeur par VBA (ici pour cocher) :

Worksheets("Test").monbouton.Value = True

Ca marche ?

CAP2

"DoMi"
Bonjour,

Je voudrais modifier par VBA la valeur de boutons d'option situ s sur
une feuille de calcul, mais je ne sais pas comment les d signer.

Quelqu'un peut-il m'aider ?

Merci !


CAP2
Le #16647021
Salut,

Bon, j'ai peut-être toujours rien compris, mais je me lance ! Essaie ça
(ici, pour mon exemple j'attaque les 3 optionbuttons pour les cocher tour à
tour, à toi d'adapter à ton cas) :

Sub test()
Dim i As Integer

For i = 1 To 3

ActiveSheet.OLEObjects("optionbutton" & i).Object.Value = True

Next

End Sub

Ca marche ?

CAP2

"DoMi"
Oui, ça, c'est facile !
J'étais fatigué hier, et ma question était incomplète... (il faut dire
que quand on est devant son PC à 4 heures du matin, c'est normal qu'on
ne soit pas très frais dans la journée !)

Donc, la question complète, c'est : j'ai 80 OptionButtons sur ma
feuille, et dans le but de leur attribuer leur valeur dans une boucle,
je voudrais que leur numéro d'ordre (OptionButton1 à OptionButton80)
soit remplacé par une variable...

Bon, maintenant, il est 5 h, je vais me recoucher...


On 27 août, 17:59, "CAP2"
Salut,

mettons que ton bouton soit sur une feuille nomm e "Test", et que ton
bouton
s'appelle "monbouton" (pour le nommer, tu passes en mode cr ation, tu
cliques-droit dessus, Propri t s, et tu changes la propri t Name. Ici
donc,
j'ai choisi monbouton...

Puis, pour changer sa valeur par VBA (ici pour cocher) :

Worksheets("Test").monbouton.Value = True

Ca marche ?

CAP2

"DoMi"
Bonjour,

Je voudrais modifier par VBA la valeur de boutons d'option situ s sur
une feuille de calcul, mais je ne sais pas comment les d signer.

Quelqu'un peut-il m'aider ?

Merci !


DoMi
Le #16648971
Merci !
J'avais oublié le terme "Object"...

Maintenant, j'ai quand même un problème.
Mon but : traiter les réponses à un QCM de 20 questions, avec 4
réponses possibles par question.
Ces réponses sont dans un fichier texte avec 20 lignes, chacune avec 1
lettre (A, B, C ou D suivant la réponse)
Dans mon code, je lis le fichier ligne par ligne et teste les
réponses:

j = 1
For i = 1 To 20
Input #n, Ligne
Select Case Ligne
Case "A"
Worksheets("Réponses").OLEObjects("OptionButton" &
j).Object.Value = True
Case "B"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
1)).Object.Value = True
Case "C"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
2)).Object.Value = True
Case "D"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
3)).Object.Value = True
End Select
j = j + 4
Next
Au premier tour, tout va bien : si la réponse est "B", c'est bien
l'OptionButton2 qui passe à True.
Au deuxième tour, c'est les boutons 5 à 8 qui nous intéressent. Donc,
si la réponse est "B", il faudrait cocher l'OptionButton6.
Et bien, ça ne va pas, j'ai le message "Erreur d'exécution '1004':
Impossible de lire la propriété OLEObjects de la classe Worksheet.".

Qu'est-ce que je n'ai pas fait que j'aurais dû faire ?
CAP2
Le #16650691
Salut,

bon déjà y'a un truc bizarre dans ta boucle...

Tu fais un For i =1 To 20, alors que la variable i n'apparaît nulle part
dans ta boucle...

Ensuite, pour ta question 1, les optionbuttons concernés sont donc 1, 2, 3
et 4, mais tu incréments j avec ton j=j+4 avant ton NEXT.
Donc pour la question 2, les options buttons concernés sont 8, 9, 10 et 11
au lieu de 5, 6, 7 et 8.

Ton incrément devrait plutôt être j=j+1 pour passer de Optionbutton4 à
Option button 5, boucler, et arriver sur ton

"Worksheets("Réponses").OLEObjects("OptionButton" & j).Object.Value = True"

avec un j égal à 5

Ca marche ?

CAP2

"DoMi"
Merci !
J'avais oublié le terme "Object"...

Maintenant, j'ai quand même un problème.
Mon but : traiter les réponses à un QCM de 20 questions, avec 4
réponses possibles par question.
Ces réponses sont dans un fichier texte avec 20 lignes, chacune avec 1
lettre (A, B, C ou D suivant la réponse)
Dans mon code, je lis le fichier ligne par ligne et teste les
réponses:

j = 1
For i = 1 To 20
Input #n, Ligne
Select Case Ligne
Case "A"
Worksheets("Réponses").OLEObjects("OptionButton" &
j).Object.Value = True
Case "B"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
1)).Object.Value = True
Case "C"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
2)).Object.Value = True
Case "D"
Worksheets("Réponses").OLEObjects("OptionButton" & (j +
3)).Object.Value = True
End Select
j = j + 4
Next
Au premier tour, tout va bien : si la réponse est "B", c'est bien
l'OptionButton2 qui passe à True.
Au deuxième tour, c'est les boutons 5 à 8 qui nous intéressent. Donc,
si la réponse est "B", il faudrait cocher l'OptionButton6.
Et bien, ça ne va pas, j'ai le message "Erreur d'exécution '1004':
Impossible de lire la propriété OLEObjects de la classe Worksheet.".

Qu'est-ce que je n'ai pas fait que j'aurais dû faire ?
DoMi
Le #16651471
Merci pour ta patience !

Oui, pour la boucle, j'aurais pu faire
Do While Not EOF(n) pour boucler jusqu'à la fin de la lecture du
fichier texte.
Mais je préfère boucler sur i de 1 à 20 parce que j'utilise cette
variable pour autre chose (j'ai supprimé du code quelques lignes qui
n'ont rien à voir avec mon problème et qui encombreraient ici.

Concernant ma variable j, c'est bon comme je fais : je n'incrémente
pas en même temps que i, ce qui explique le j = j + 4.
Pour chaque question, il y a 4 réponses.

En fait, j'ai trouvé entre temps la solution à mon problème, et il
n'est pas dans le code.
A partir de la deuxième série de 4 OptionButton, je les ai "groupés",
alors que je ne l'avais pas fait pour les 4 premiers boutons.
Après avoir "dégroupé" tous les boutons, mon code fonctionne bien.
Bien sûr, pour que les groupes de 4 boutons soient indépendants des
autres, j'ai mis la propriété GroupName à "Q1" pour le premier groupe ,
"Q2" pour le 2e etc., mais ça, je l'avais déjà fait précédemment, la
seule différence, c'est qu'en plus je les ai groupés (clic droit en
mode création, Groupe, Grouper)

A quoi sert donc ce "Grouper" ?
CAP2
Le #16652851
Salut,

houlà, je commence à bien disjoncter ;o))

T'as raison pour le j=j+4 !

Désolé ;o))

En ce qui concerne le Grouper, moi je m'en sers que pour des notions
d'alignements de blocs d'objets, mais je suppose que ça doit jouer sur le
comportement des optionbuttons comme c'est le cas pour les frames VBA...

CAP2

"DoMi"
Merci pour ta patience !

Oui, pour la boucle, j'aurais pu faire
Do While Not EOF(n) pour boucler jusqu'à la fin de la lecture du
fichier texte.
Mais je préfère boucler sur i de 1 à 20 parce que j'utilise cette
variable pour autre chose (j'ai supprimé du code quelques lignes qui
n'ont rien à voir avec mon problème et qui encombreraient ici.

Concernant ma variable j, c'est bon comme je fais : je n'incrémente
pas en même temps que i, ce qui explique le j = j + 4.
Pour chaque question, il y a 4 réponses.

En fait, j'ai trouvé entre temps la solution à mon problème, et il
n'est pas dans le code.
A partir de la deuxième série de 4 OptionButton, je les ai "groupés",
alors que je ne l'avais pas fait pour les 4 premiers boutons.
Après avoir "dégroupé" tous les boutons, mon code fonctionne bien.
Bien sûr, pour que les groupes de 4 boutons soient indépendants des
autres, j'ai mis la propriété GroupName à "Q1" pour le premier groupe,
"Q2" pour le 2e etc., mais ça, je l'avais déjà fait précédemment, la
seule différence, c'est qu'en plus je les ai groupés (clic droit en
mode création, Groupe, Grouper)

A quoi sert donc ce "Grouper" ?
Publicité
Poster une réponse
Anonyme