VBA Utiliser un bouton suivant une variable

Résolu
Bonjour,

Je souhaiterai pouvoir choisir un bouton en particulier en utilisant une variable contenant le nom de ce bouton.
Dans ma feuille excel, j'ai une multitude de boutons nommés de manière organisée suivant leur position.
Par l'intermédiaire d'une variable string, lui donnant la valeur que je souhaite (ex: une boucle qui lui donnerait un nom incrémenté à chaque fois) je voudrais utiliser le bouton nommé tel que le contenu de cette variable.

J'espère être clair. Sinon merci de me faire un retour de vos questions pour précision.

--
Myg

5 réponses

  1. Je ne sait pas si on peux générer des variables avec des noms séquentiels par le code

    Tu peux m'en dire plus sur ce que font ces boutons
    Je cherche surtout à savoir s'ils ont un effet similaire
    0
    1. Oui dans l'idée ils auront une partie de code similaire.
      Mais plus exactement ce n'est pas tant leur action qui m'interresse mais de pouvoir modifier le nom de ces boutons via une variable.

      Un exemple imagé:
      Ces boutons sont rangés on va dire sous forme de tableau; ce qui veut dire que leur position serait définie par leurs n° de ligne et de colonne. Et je voudrais les nommer de cette manière en fonction de leur position (par exemple "Bt_2_8" pour le bouton ligne 2 colonne 8). Bien sur je peux le faire à la main, seulement il y a une multitude de boutons et je sais qu'il existe une commande pour le faire grâce à un code. But je ne sais plus comment...
      0
      1. On peux utiliser la fonction .Name pour changer le nom d'un bouton mais je ne voit pas comment changer tout les noms des boutons

        Par exemple CommandButton28.Name = "Bt_2_8" change le nom du bouton
        Mais comment faire pour changer tous leurs noms.. aucune idée :x
        Une signature? Pour quoi faire?
        0
        1. Contributeur
          Bonjour

          Cette macro crée les boutons et les nomment en fonction de leur position Btn_2_3: bouton sur la cellule C2

          Option Explicit
          
          Sub generer_nommer_boutons()
          Dim Btn As OLEObject
          Dim lig As Byte, col As Byte, lig_fin As Byte, col_fin As Byte
          Dim cptr_l As Byte, cptr_c As Byte, num As Byte
          Dim Target As Range
          
          'parametres
          lig = 2 'ligne de départ
          lig_fin = 4 'ligne fin
          col = 2 'colonne de départ
          col_fin = 5 'colonne fin
          num = 1
          For cptr_l = lig To lig_fin + 1
              For cptr_c = col To col_fin
                    Set Target = ActiveSheet.Cells(cptr_l, cptr_c)
                    Set Btn = ActiveSheet.OLEObjects.Add("Forms.CommandButton.1")
                    With Btn
                         .Left = Target.Left
                         .Top = Target.Top
                         .Width = Target.Width - 2
                         .Height = Target.Height - 2
                         .Name = "Btn_" & cptr_l & "_" & cptr_c
                         .Object.Caption = "blabla " & num
                    End With
                    num = num + 1
                Next
          Next
          End Sub


          attention avec les OLEobject la macro plante en mode arrêt (pas à pas)

          demo:
          https://www.cjoint.com/?3FBrgGUCn0t
          0
          1. Ca c'est ce que j'appelle une réponse !!! :D
            Merci à vous d'avoir cherché, effectivement c'était pas plus compliqué. J'dirai pas honte sur moi mais presque lol C'est que ca fait un moment que je n'avais pas repris la prog de macro.
            Au plaisir d'une autre question...
            0
            1. Contributeur
              effectivement c'était pas plus compliqué

              ben voyons
              0
            2. Oui enfin pour être exact, ça répond pas entièrement a mon pb mais j'm'arrangerai avec ça =)

              J'aurai préféré ne pas avoir à les créer et plutôt reprendre les boutons existants.
              Mais bon... ;o)
              0
            3. J'avais qu'à m'y prendre tel que tu l'as montré au dessus dès le début, voila tout =)
              0
            4. ben voyons

              lol j'avais pas vu ce commentaire...
              MDR
              Bah oui écoute, c'est une facon relativement simple, ca ne m'est pas venu du tout à l'esprit, c là le but aussi d'un forum !! Gt parti sur une autre approche, mais pas la meilleure. Donc merci à toi pour la réflexion plus logique à adopter.
              0