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

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

  • VBA Récupérer le nom du format de contrôle.xlsx
    23.3 KB · Affichages: 23

FAB80170

XLDnaute Junior
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."

.....................................
 

FAB80170

XLDnaute Junior
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."
 

phlaurent55

Nous a quittés en 2020
Repose en paix
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
 

FAB80170

XLDnaute Junior
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.
 

laurent950

XLDnaute Accro
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

  • VBA Récupérer le nom du format de contrôle (1).xlsm
    31.6 KB · Affichages: 18

FAB80170

XLDnaute Junior
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

  • 111 - Copie.xlsm
    30 KB · Affichages: 21

FAB80170

XLDnaute Junior
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.
 

laurent950

XLDnaute Accro
... 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:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS