Microsoft 365 lancer une macro juste en sélectionnant une forme (Shape)

creolia

XLDnaute Impliqué
Bonjour le forum

je viens vous posez une petite question qui malgré mes connaissance je n'arrive pas a résoudre.

j'ai une feuille avec des formes ou shape je les créer Grace à une macro qui les renommes mise en forme ect je les utilise sur un plan.

le soucis quand ces formes quand il sont créer il ne sont pas cliquable comme un bouton juste sélectionnable.

ma question est la suivante comment lancer une macro juste en sélectionnant la forme mon but est de récupéré le texte de la forme et envoyer vers une textbox

ou lors de la création de ma forme puis je intégré une macro automatiquement à l'intérieur.

pouvez vous m'aider svp cordialement patrice
 

Pièces jointes

  • Essais1.xlsm
    776.8 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Créolia, Oneida,
Un exemple où une macro est attachée à toute forme de la feuille :
VB:
Sub Essai()
    For Each S In ActiveSheet.Shapes
        S.OnAction = "MaMacro"
    Next
    [A1].Select
End Sub
En PJ la macro accrochée donne juste le nom du shape cliqué.
 

Pièces jointes

  • Essais1 (1).xlsm
    159.8 KB · Affichages: 5

creolia

XLDnaute Impliqué
Bonjour sylvanu

merci pour votre aide mais je ne comprend pas la mise en œuvre de votre code dois juste créer un module avec le code car sur mon projet cela fonctionne pas j'ai essayer également de limité cette evenement à qu'un type de forme mais sa ne marche pas non plus pourriez vous éclairé ma lanterne svp

ci dessous votre code que j'ai essayer modifier

VB:
Sub Essai()
    Dim Sh As Shape
For Each Sh In Sheets("Feuil1").Shapes
'On Error Resume Next
If Sh.Name Like "PO_06_*" Or Sh.Name Like "PO_09_*" Or Sh.Name Like "PO_25_*" Or Sh.Name Like "CO_02_*" Or Sh.Name Like "CO_05_*" Or Sh.Name Like "CO_25_*" Or Sh.Name Like "EP_06_*" Then

        S.OnAction = "MaMacro"
End If
    Next
    [A1].Select
  
End Sub
Sub MaMacro()

    MsgBox "Nom de la forme sélectionnée : " & Application.Caller
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Le problème est que tous les shapes sont groupés. Donc les noms ne sont pas ceux utilisés ils ont un préfixé dépendant de leur groupe. ( en plus vous faites Sh.name puis S.Onaction )
En Pj un essai où le groupe n'intervient pas, avec :
VB:
Sub Essai()
    For Each S In ActiveSheet.Shapes
        S.OnAction = "MaMacro"
    Next
    [A1].Select
End Sub
Sub MaMacro()
Sh = Application.Caller
If Sh = "PO_06" Or Sh = "PO_09" Or Sh = "PO_25" Or Sh = "CO_02" Or Sh = "CO_05" Or Sh = "CO_25" Or Sh = "EP_06" Then
    MsgBox "Nom de la forme sélectionnée : " & Application.Caller & Chr(10) & Chr(10) & _
            " Texte dans forme : " & VbTab & ActiveSheet.Shapes(Sh).TextFrame.Characters.Text
End If
End Sub
La macro est attachée à tous les shapes et la différenciation se fait dans la macro.
 

Pièces jointes

  • Essais1 (1).xlsm
    161 KB · Affichages: 10

creolia

XLDnaute Impliqué
Bonsoir,
Le problème est que tous les shapes sont groupés. Donc les noms ne sont pas ceux utilisés ils ont un préfixé dépendant de leur groupe. ( en plus vous faites Sh.name puis S.Onaction )
En Pj un essai où le groupe n'intervient pas, avec :
VB:
Sub Essai()
    For Each S In ActiveSheet.Shapes
        S.OnAction = "MaMacro"
    Next
    [A1].Select
End Sub
Sub MaMacro()
Sh = Application.Caller
If Sh = "PO_06" Or Sh = "PO_09" Or Sh = "PO_25" Or Sh = "CO_02" Or Sh = "CO_05" Or Sh = "CO_25" Or Sh = "EP_06" Then
    MsgBox "Nom de la forme sélectionnée : " & Application.Caller & Chr(10) & Chr(10) & _
            " Texte dans forme : " & VbTab & ActiveSheet.Shapes(Sh).TextFrame.Characters.Text
End If
End Sub
La macro est attachée à tous les shapes et la différenciation se fait dans la macro.
Bonsoir Sylvanu désolé j'ai pas put vous répondre avant je tenais à vous remercier pour votre aide j'ai put adapter comme je voulais grâce à votre bout de code. grâce a votre aide j'ai appris de nouvelle possibilité que j'ignorais je vous souhaite de bonne fête à vous et à vos proches bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502