Synthaxe "OptionButton" en VBA Ecel?

Résolu
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 ....
--

*** @+ / Furtif ***
*** J'aime l'épicure ! ***
Configuration: Windows XP
Internet Explorer 7.0

10 réponses

  1. Contributeur
    Up ... merci
    0
    1. Contributeur
      Bonjour,

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

      eric
      1
      1. Contributeur
        Merci à toi ... c'est bète, je butais là-dessus ... Grand merci.
        0
    2. Contributeur
      De rien..
      Bonne continuation :-)
      0
      1. Contributeur
        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
        1. Contributeur
          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
          1. Modérateur
            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
            1. Contributeur
              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
            2. Contributeur
              @FurtifBonsoir 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
            3. Contributeur
              @eriiicMerci de ta réponse ... je regarder tout ça au calme et te tiendrais au courant.
              0
          2. Contributeur
            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
            1. Contributeur
              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
              1. Contributeur
                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
              2. Contributeur
                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
              3. Modérateur
                @FurtifBonjour,

                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
              4. Contributeur
                @m@rinaMerci ... 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
              5. Modérateur
                @FurtifBonsoir,

                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
            2. Contributeur
              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
              1. Contributeur
                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