Synthaxe "OptionButton" en VBA Ecel?
Résolu
Furtif
Messages postés
9887
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Furtif Messages postés 9887 Date d'inscription Statut Contributeur Dernière intervention -
Furtif Messages postés 9887 Date d'inscription Statut Contributeur Dernière intervention -
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 ....
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 ....
A voir également:
- Option button vba
- Option d'ergonomie - Guide
- Option volte/vowifi - Guide
- Excel compter cellule couleur sans vba - Guide
- Delete boot option - Forum BIOS
- Cette option de connexion est désactivée - Forum Windows 10
10 réponses
Bonjour,
C'est la propriété .value :
if OptionButtonA.value = true then nom = toto
eric
C'est la propriété .value :
if OptionButtonA.value = true then nom = toto
eric
Furtif
Messages postés
9887
Date d'inscription
Statut
Contributeur
Dernière intervention
929
Merci à toi ... c'est bète, je butais là-dessus ... Grand merci.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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.
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.
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
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
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.
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.
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
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
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.
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.
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.
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.
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
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
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
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
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
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