Synthaxe "OptionButton" en VBA Ecel?

Résolu/Fermé
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 - 21 févr. 2008 à 09:30
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 - 4 mars 2008 à 22:47
Bonjour,


Voilà, c'est tout bète ... j'ai fait mon user form avec (entre autres) 4 boutons dont le 1er est présélectionné (true), mais je ne me souviens plus de la synthaxe de code VBA pour positionner une variable en fonction du bouton sélectionné : ex :

Bouton A .... toto
Bouton B .... bidule
Bouton C .... machin
Bouton D .... truc

je voudrai donc :
if OptionButton A = true, nom = toto
if OptionButton B = true, nom = bidule
etc ..
endif

à vous lire ... merci ....

10 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
21 févr. 2008 à 19:43
Bonjour,

C'est la propriété .value :
if OptionButtonA.value = true then nom = toto

eric
1
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
21 févr. 2008 à 19:46
Merci à toi ... c'est bète, je butais là-dessus ... Grand merci.
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
21 févr. 2008 à 18:43
Up ... merci
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
21 févr. 2008 à 19:48
De rien..
Bonne continuation :-)
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
22 févr. 2008 à 08:27
Bonjour

Bon, je me suis emballé un peu vite. Je n'arrive pas à récupérer la variable. J'explique (mieux) :

J'ai regroupé mes OptionButton dans un Frame :
Private sub frame2_click()
if optionbutton1.value = true then Nom=toto
if optionbutton2.value = true then Nom=tata
if optionbutton3.value = true then Nom=titi
end if
end sub

puis plus loin


Private sub
Cells(LigneSuivante, 1 ... jusqu'à 5) ... = Variable.text .... ça me recopie ce que j'ai inscrit dans mes TextBox 1 à 5
Cells(LigneSuivante, 6) = Ville.text
Cells(LigneSuivante, 7) = Nom.Text ............ je souhaite récupérer la valeur de la variable Nom et la placer dans une cellule (ça fonctionne déjà avec les autres variables "textes")

etc ....

Mais ça me répond systématiquement pour cette variable Nom : Variable non définie.

Et là, novice en VBA, je sèche ... merci de votre aide.



0

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

Posez votre question
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
22 févr. 2008 à 10:31
Bonjour,

Si c'est une variable il faut juste l"appeller par son nom sans rien ajouter.
Cells(LigneSuivante, 7) = Nom
Mais tout dépend de sa portée, il faut qu'elle soit déclarée dans un module en dehors de toute procédure pour être visible partout. Consulte l'aide excel si veux plus de détail sur la portée et la durée de vie d'une variable.

eric
0
m@rina Messages postés 20024 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 avril 2024 11 269
22 févr. 2008 à 10:49
Bonjour Furtif

Pour des optionbuttons dans un frame, je ferais une boucle comme ceci :

For Each p In Me.frame2.Controls
If p.Value = True Then resultat = p.Caption
Next p

C'est plus clean qu'une suite de IF...

Ensuite, tu peux mettre ta variable "resultat" dans ta cellule :

Cells(LigneSuivante, 7) = resultat

m@rina
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
25 févr. 2008 à 12:00
Bonjour

J'ai essayé vos 2 méthodes mais ça ne fonctionne pas.

Je les ai d'abord déclaré dans un private sub, puis, sans succés, je les ai déplacé dans la la private sub qui remplit les cellules ... ça ne marche pas non plus.

Dans la solution de m@rina, ça bloque sur le "p"
Dans l'autre solution il ne veut pas prendre ma variable resultat

Je n'y comprend rien. ça semble bien compliqué pour un malheureux OptionButton.

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210 > Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010
25 févr. 2008 à 21:24
Bonsoir furtif,

J'avais lu un peu vite sans remonter le fil et j'ai répondu juste à ton pb de variable.
Et il y a tellement de possibilité pour faire qcq chose qu'il faudrait je pense reprendre à 0 certains trucs.

Tu as un formulaire avec des optionbutton, des zones texte et sans doute un bouton ok...
Ton code tu peux le mettre dans les optionbutton1_click, optionbutton2_click, dans le TextBox1_Change, dans le CommandButtonOK_Click, là tu seras dans ton formulaire et tu n'auras pas besoin de le désigner.

Tu peux très bien fixer la valeur ta variable nom dans les optionbutton1_click, optionbutton2_click etc, ou bien balayer tes optionbuttonx.value dans le CommandButtonOK_Click et là faire comme marina l'expliquait, eventuellement en testant le type d'objet avec If TypeOf Ctrl Is ... then ... (mais pour ré-utiliser ta variable ailleurs, dans un autre module il faut qu'elle soit publique)

Si tu désires tester ou utiliser optionbutton1.value ailleurs, dans un module par exemple, il faudra que tu désigne ton formulaire explicitement MsgBox(UserForm1.OptionButton1.Value).

Pour les variables, si tu la déclares dans une procédure elle ne sera vue que de cette procédure.
Si tu la déclares en début d"un module (avant le 1er sub) avecv Dim elle sera visible dans toutes les procédure de ce module.
Si tu la déclares en début d"un module (avant le 1er sub) en en plus que tu la déclares avec Public elle sera vue dans toutes les procédures de tous les modules.

Maintenant je ne sais pas trop comment tu as déclarer tes variables ni où tu les utilises...
Et si la variable nom tu ne l'utilises que pour mettre à jour une cellule et qu'elle ne te sert plus ensuite tu peux très bien le faire directement dans les procédures click, change,... des objets de ton formulaire.

Peut-être qu'avec ces éléments tu y verras plus clair sur la portée des variables si c'était là ton pb.

eric
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
25 févr. 2008 à 21:27
Merci de ta réponse ... je regarder tout ça au calme et te tiendrais au courant.
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
22 févr. 2008 à 11:34
Merci de vos réponses, je vais voir dès que possible, et vous tiens informé.

Pour "l'aide", j'ai l'impression que c'est mal installé (je l'ai reçu comme ça de mon entreprise), il me demande en permanence de consulter en ligne, ou me renvoie à l'aide Excel mais pas au VBA.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
22 févr. 2008 à 11:49
Pour l'aide va dans le menu aide justement et sélectionne 'option pour les commentaires client...' et dans la catégorie 'contenu en ligne' tu décoches.
Ce truc m'a fait braire un bon moment avant de trouver par hasard où le désactiver
Quelle idée de mettre des options dans le menu aide pfffff
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
22 févr. 2008 à 11:53
Merci, je vais voir ça aussi.

Dit donc, j'ai un truc qui me chiffone sur Excel 2007 et je voudrai savoir si ce défaut existe aussi chez d'autres :

Je fais une mise en forme conditionnelle d'une cellule (changement de couleur et de police sur conditions) .. ça n'est traité à l'affichage que si je scrolle ma page jusqu'à faire disparaitre ma cellule, puis scroll inverse .. sinon, la condition n'est pas traitée.
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
22 févr. 2008 à 13:19
Re

Je cherche mais ne troupe pas ce que tu m'indiques ... Je suis en Office 2007 / et XP SP2

Dans Excel, j'ai juste un point d'interrogation en bout de bandeau et rien de ce que tu m'indiques, et dans le helper du menu "Démarrer", je ne trouve pas ton option ...

Mébon, faut que je vérifie s'ils tout bien installé, j'ai les CD d'origine, je verrai ça plus tard.
0
m@rina Messages postés 20024 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 avril 2024 11 269 > Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010
22 févr. 2008 à 16:31
Bonjour,

Concernant l'aide sur le VBA 2007, il est vrai qu'il faut désactiver l'aide en ligne qui est inexistante.
Clique sur F1 pour afficher l'aide, puis en bas à gauche de la fenêtre d'aide, tu as une liste déroulante : choisis "Afficher un contenu à partir de cet ordinateur uniquement".

m@rina
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927 > m@rina Messages postés 20024 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 avril 2024
22 févr. 2008 à 16:37
Merci ... mais non, je n'ai pas ce terme sur la liste des diffréents modules d'aide

Ni sur Excel, ni sur le VBE
0
m@rina Messages postés 20024 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 avril 2024 11 269 > Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010
22 févr. 2008 à 20:44
Bonsoir,

Euh... j'ai quelques difficultés avec ma droite et ma gauche !!! :D
Donc, je rectifie : en bas dans l'angle, à droite...

Je t'ai mis une capture d'écran ici :
https://www.cjoint.com/?cwuQYApgV3

m@rina
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
22 févr. 2008 à 14:10
Et oui, ce que je t'ai indiqué c'est sur excel 2003.
Aucune idée de où ça se trouve sur 2007, désolé.
Pour ton pb de rafraichissement écran sur 2007 j'ai vu une question à ce sujet il y a qcq temps mais je ne me rappelle pas si c'était sur une MFC.
eric
0
Furtif Messages postés 9887 Date d'inscription lundi 25 avril 2005 Statut Contributeur Dernière intervention 8 mars 2010 927
4 mars 2008 à 22:47
Bonsoir

Alors un grand merci à eriiic et m@rina.

J'ai déplacé le bloc de sélection OptioButton dans la même sub que la saisie des autres TextBox, et ça marche. Je récupère correctement ma variable.
Effectivement, les variables déclarées dans un "PrivateSub" ne concernent que celui-ci.

Bon, je clique en résolu, mais j'aurais certainement encore des questions VBA sur d'autres fonctions .. plus tard ..

Merci encore
0