VBA Récupérer le nom du format de contrôle

  • Initiateur de la discussion Initiateur de la discussion FAB80170
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FAB80170

XLDnaute Junior
Bonsoir,

j'ai une série de 25 boutons (format de contrôle), dont le nom est à chaque fois différent.

Je souhaiterais qu'au clic de chaque bouton, le nom de ce dernier s'écrive dans la cellule M13. (Un copier coller du nom du bouton).

Je souhaiterais si possible, regrouper les macros individuelles dans un seul code.

Par avance Merci pour votre aide.
 

Pièces jointes

Bonsoir Eric.

Merci pour votre réponse et sincèrement désolé si j'ai manqué à un retour d'infos ou remerciements.

Néanmoins, je peux vous envoyer de nombreuses réponses avec de chaleureux remerciements.

Bonne Année à vous.



"Bonsoir JBARDE,

désolé de répondre si tard; journée très chargée ...
êtes vous auto-entrepreneur ou simplement passionné ?
Je reviens vers vous au plus vite.
J'ai toujours pas de mots ... pour exprimer ma gratitude.

Bonne nuit."

.....................................
 
Bonjour à tous,

voir fichier joint (après avoir remis un peu d'ordre dans les boutons)

à+
Philippe

Bonsoir Philippe, bonsoir à tous.

Je suis désolé, dans ma demande initiale, je pense avoir confondu "nom du Bouton" avec "texte du Bouton".

Est-ce possible avec "texte du Bouton" ?

Encore désolé pour cette confusion de ma part.

"Bonsoir,

j'ai une série de 25 boutons (format de contrôle), dont le nom est à chaque fois différent.

Je souhaiterais qu'au clic de chaque bouton, le nom de ce dernier s'écrive dans la cellule M13. (Un copier coller du nom du bouton).

Je souhaiterais si possible, regrouper les macros individuelles dans un seul code.

Par avance Merci pour votre aide."
 
Re-bonjour,

pour le texte du bouton, la réponse a été donnée dans mon fichier, il s'agissait de:
Code:
Sub Bouton()
[M13] = "Bouton " & Mid(Application.Caller, 8, 2) - 25
End Sub

pour le nom du bouton il suffit de remplacer le code de mon fichier précédent par celui-ci:
Code:
Sub Bouton()
[M13] = Application.Caller
End Sub

à+
Philippe
 
Re-bonjour,

pour le texte du bouton, la réponse a été donnée dans mon fichier, il s'agissait de:
Code:
Sub Bouton()
[M13] = "Bouton " & Mid(Application.Caller, 8, 2) - 25
End Sub

pour le nom du bouton il suffit de remplacer le code de mon fichier précédent par celui-ci:
Code:
Sub Bouton()
[M13] = Application.Caller
End Sub

à+
Philippe

Bonjour Philippe et une nouvelle fois merci pour ton retour.

Alors, ma demande concernait bien le texte du bouton; mais ce que je ne comprends pas, c'est que si je fais un clic droit pour modifier le texte du bouton 1 (exemple "titi") et que je clique sur ce dernier, c'est toujours le texte "Bouton 1" qui s'affiche dans la cellule M13 ... au lieu de "titi".
Je dois être amené à modifier le texte de mes 25 boutons aléatoirement ... peut-être que ce n'est pas le bon emplacement pour la modification du texte ?

P.S. Désolé de vous importuner à nouveau, et, par avance, merci pour votre retour.

Bien cordialement.
 
Bonsoir,
Liste des Boutons associé au Macro VBA de ceux-ci :

VB:
Sub test()
Dim shp  As Shape
For Each shp In ActiveSheet.Shapes
    'shp.Select
    'MsgBox shp.TextFrame.Characters.Caption
    'MsgBox Split(shp.OnAction, "!")(1)
Cells(12, 13) = "Nom bouton"
Cells(12, 14) = "Nom de la macro"
    ' Nom bouton
    cpt = cpt + 1
    Cells(12 + cpt, 13) = shp.TextFrame.Characters.Caption
    ' Nom de la macro
    If shp.OnAction <> Empty Then
    Cells(12 + cpt, 14) = Split(shp.OnAction, "!")(1)
    End If
Next shp
End Sub
 

Pièces jointes

Bonsoir,
Liste des Boutons associé au Macro VBA de ceux-ci :

VB:
Sub test()
Dim shp  As Shape
For Each shp In ActiveSheet.Shapes
    'shp.Select
    'MsgBox shp.TextFrame.Characters.Caption
    'MsgBox Split(shp.OnAction, "!")(1)
Cells(12, 13) = "Nom bouton"
Cells(12, 14) = "Nom de la macro"
    ' Nom bouton
    cpt = cpt + 1
    Cells(12 + cpt, 13) = shp.TextFrame.Characters.Caption
    ' Nom de la macro
    If shp.OnAction <> Empty Then
    Cells(12 + cpt, 14) = Split(shp.OnAction, "!")(1)
    End If
Next shp
End Sub

Bonsoir laurent950

Un grand Merci pour votre retour.
J'ai collé le code puis affecté chaque bouton à ce dernier. Mais le résultat n'est pas celui escompté. Mais je maitrise si mal les macros, que je pense peut être la cause de ce désordre. (le fichier en pj).
Néanmoins, la solution proposé par Philippe marche à merveille.
Encore merci !
 

Pièces jointes

Il y a des boutons avec des noms pour chaque boutons (Il y a une macro différente pour chacun des boutons) la macro fait le listing des macros qui correspondent a chacun de ces boutons

Vous voulez faire quoi pour comprendre ?

Laurent,
au regard du code et de vos explications, je ne sais pas quoi trop vous répondre, car le fossé est énorme ...
... j'affecte à chacun des boutons la même macro en changeant le "nom bouton" et le "nom de la macro" ?
Sincèrement navré d'être aussi ignare ... et merci pour votre aide.
 
... j'affecte à chacun des boutons = Cells(14, 2) = "Nom bouton"
la même macro = shp.OnAction = "test"
en changeant le "nom bouton" = Cells(14, 3) = "Nom Bouton Modifié"

' j'ai pas fait mais
et le "nom de la macro" = shp.OnAction = "test" (ici remplacer "test") par un autre nom de macro au choix

Nota : Sub test() c'est shp.OnAction = "test"

VB:
Sub test()
Dim shp  As Shape
For Each shp In ActiveSheet.Shapes
    'shp.Select
    'MsgBox shp.TextFrame.Characters.Caption
    'MsgBox Split(shp.OnAction, "!")(1)
Cells(13, 2) = "Actuel"
Cells(13, 3) = "Modification"
Cells(14, 2) = "Nom bouton"
Cells(14, 3) = "Nom Bouton Modifié"
Cells(14, 4) = "Nom de la macro"
    ' Nom bouton
    cpt = cpt + 1
    Cells(14 + cpt, 2) = shp.TextFrame.Characters.Caption
    ' Si Nom Modifié = Nouveau nom
    If Cells(14 + cpt, 3) <> Cells(14 + cpt, 2) And Cells(14 + cpt, 3) <> Empty Then
    shp.TextFrame.Characters.Caption = Cells(14 + cpt, 3)
    End If
    ' Affecte une macro a un bouton (la même a tous les boutons
        shp.OnAction = "test"
    ' Nom de la macro
    If shp.OnAction <> Empty Then
    Cells(14 + cpt, 4) = Split(shp.OnAction, "!")(1)
    End If
Next shp
End Sub

Laurent
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
20
Affichages
872
Retour