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. 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...
    1. Contributeur
      effectivement c'était pas plus compliqué

      ben voyons
    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)
    3. J'avais qu'à m'y prendre tel que tu l'as montré au dessus dès le début, voila tout =)
    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.
  2. 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
    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?
      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...
        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