Incorporer le texte d'un bouton dans une macro VBA

Bonjour,

Je souhaite créer une macro qui insère un texte dans une cellule A1.

Ce texte sera fonction du texte contenu dans le bouton auquel la macro sera affectée.

Par exemple, si j'applique la macro à un bouton contenant le texte "10%", après avoir cliqué sur ce bouton, la cellule A1 contiendra "10%". Si j'applique cette macro à un autre bouton contenant "Paul", après avoir cliqué sur ce bouton, la cellule A1 contiendra "Paul".

Quelqu'un sait-il comment rédiger cette macro?

Merci

Bonjour,

Il faut travailler avec des TextBox et en validant, affecter la valeur du TextBox à la cellule active

Amicalement

Pierrot

Bonjour Nicopat, Bonjour Pierrot

Voici un exemple de code à appliquer sachant que le bouton contient 10%

Private Sub CommandButton1_Click()
Range("A1") = CommandButton1.Caption
End Sub

Bonjour et1000lio , nicopat

la version de et1000lio aménagée avec macro

Cordialement

Salut et1000lio

Pierrot

105valeur-du-bouton.xlsm (18.32 Ko)

Merci pour vos réponses,

Concernant cette option :

Private Sub CommandButton1_Click()

Range("A1") = CommandButton1.Caption

End Sub

...je ne parviens pas à l'utiliser car cela ne semble pas être une macro à part entière : quand je la colle dans mon module, la macro n'apparaît pas dans la liste des macros.

Et concernant la proposition de Cappe Pierre, en fait si je reprends ton fichier comme exemple, ce que je veux c'est quand je clique sur le bouton bleu contenant le texte "UF", cela colle ou saisit "UF" dans la cellule visée (disons A1 par exemple) et ce sans qu'un bouton intermédiaire ne s'affiche. Et si le texte était différent dans ce bouton bleu, (disons ABCD à la place de UF), cela collerait ABCD dans A1.

Bonjour,

Ton fichier modifié

Pierrot

Merci,

Les boutons activeX sont au-delà de mes compétences.

J'ai découvert une macro simple qui répond à mon besoin :

Sub Clavier()

ActiveSheet.Shapes.Range(Array(Application.Caller)).Select

Range("a1") = Selection.Characters.Text

End Sub

Une question supplémentaire cependant :

si maintenant, la cellule destination n'est plus systématiquement A1.

  • disons que la cellule destination par défaut est b2, puis lorsqu'on active de nouveau cette macro :
  • si b2 contient déjà du texte, alors la cellule destination est b3
  • si b2 et b3 contiennent déjà du texte, alors la cellule destination est b4
  • etc...

Cela revient à identifier la première cellule vide parmi b2 et les cellules à droite de b2.

Autrement dit, je souhaterais incorporer dans la macro "Clavier" ci-dessus l'équivalent de :

DerLgn = .Range("b" & Rows.Count).End(xlUp).Row + 1

... mais à l'orizontal (au lieu de vertical).

J'espère être claire

Merci pour votre aide

Nicole


dsl je me suis trompée dans mon dernier post ; je reprends :

Cette macro me convient :

Sub Clavier()

ActiveSheet.Shapes.Range(Array(Application.Caller) ).Select

Range("a1") = Selection.Characters.Text

End Sub

Une question supplémentaire cependant :

maintenant, la cellule destination n'est plus systématiquement A1.

  • disons que la cellule destination par défaut est b2, puis lorsqu'on active de nouveau cette macro :
  • si b2 contient déjà du texte, alors la cellule destination est c2
  • si b2 et c2 contiennent déjà du texte, alors la cellule destination est d2
  • etc...

Cela revient à identifier la première cellule vide parmi b2 et les cellules à droite de b2.

Autrement dit, je souhaterais incorporer dans la macro "Clavier" ci-dessus l'équivalent de :

DerLgn = .Range("b" & Rows.Count).End(xlUp).Row + 1

... mais à l'orizontal (au lieu de vertical).

J'espère être claire

Merci pour votre aide

Nicole

Nicole,

Remplacer votre ligne de code par celle-ci

 ActiveCell.Select
    Selection.End(xlToRight).Select
    ActiveCell.Offset(0, -1).Range("A1").Select

sinon, envoyer votre fichier

Amicalement

Pierrot


Le même ,fichier avec les macros vers la droite

Pierrot

le fichier joint présente une macro qui répond à ma demande initiale.

Maintenant, je souhaiterais modifier cette macro pour que :

la cellule destination par défaut est b2, puis lorsqu'on active de nouveau 1 des boutons auxquels cette macro est affectée :

  • si b2 contient déjà du texte, alors la cellule destination est c2
  • si b2 et c2 contiennent déjà du texte, alors la cellule destination est d2
  • etc... horizontalement vers la droite...
33nicopat.xlsm (17.93 Ko)

Nicole,

un seul des deux boutons fonctionne, attention, il faut au moins deux colonnes remplies

sinon la macro va à l'extrême droite du fichier.

Je vous poste les deux versions

amicalement

Pierrot

33nicopat-01.xlsm (20.79 Ko)

Merci bcp Cappe Pierre!

Bonjour

Bonjour Pierrot

Un code simple pour des boutons non activex

Sub affiche()
  Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1) = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
End Sub
Rechercher des sujets similaires à "incorporer texte bouton macro vba"