XL 2021 Shape & .OnAction

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 !

ya_v_ka

XLDnaute Impliqué
Bonjour le Forum,

De retour après une longue absence excelienne...

Comme il m'est difficile de poster un exemple simple, je vais essayer d'expliquer mon souci :

Je crée par macro un rectangle (shape) et dans les options je lui confère la propriété .OnAction = "XYZ"
Lorsque je clique sur la forme xl m'annonce "Impossible d'exécuter la macro "XYZ". Il est possible qu'elle ne soit pas disponible ou désactivée"
Si je clique-droit sur la forme et lui affecte une macro, dans la liste je choisis "XYZ" et là plus de souci... même après fermeture et réouverture du fichier ça fonctionne.

Que dois-je rajouter à mon .OnAction pour qu'il pointe sur le bon classeur (N.B. Il n'y en a pas d'autre ouvert !) ?

Si quelqu'un a une idée, je suis preneur et l'en remercie d'avance 😉

Amitiés à tout.e.s

Ya_v'
 
Bonjour,

Une idée comme une autre : on peut récupérer le nom du fichier via
VB:
ThisWorkbook.Name

Donc à la place de "XYZ", indiquez ceci :
Code:
.OnAction = "'" & ThisWorkbook.Name & "'XYZ"

Bonne soirée,

Hello tous, xUpsilon,

Merci pour la proposition, j'y avais pensé mais sans les "'" ça ne marchait pas... Et là malheureusement pas non plus...
Transformé en :
Code:
.OnAction = "'" & ThisWorkbook.Name & "'.XYZ"
(ajout du .) VBA l'accepte... mais me renvoie à non présent dans ce classeur !

Merci quand même et explorons d'autres voies...

Amitiés

Ya_v'
 
Bonjour et merci p56,

Bien que le but ne soit pas exactement la création de shapes, le résultat est du même principe et... le souci aussi...

Malheureusement le problème persiste : À la création il crée un rectangle qui une fois cliqué renvoie au message d'erreur, mais si on lui attribue la macro via clic-droit/menu contextuel, etc... ça fonctionne bien !

Merci encore.

Amitiés

Ya_v'
 
Le problème vient peut-être du fait que c'est un programme d'entreprise avec limitation et signature du service informatique pour les macros.

Mais pourquoi accepterait-t-il l'attribution de la commande via les menus et la refuserait à la création du shape via VBA ?

...
 
Bonjour le fil

Test OK sur Office 365
VB:
Sub test()
Dim Shp As Shape
Set Shp = ActiveSheet.Shapes.AddShape(1, 25, 25, 60, 60)
Shp.OnAction = "'" & ActiveWorkbook.Name & "'!ShapiShapo"
End Sub
Sub ShapiShapo()
MsgBox Application.UserName, vbInformation, "Test Shape"
End Sub
 
Bonjour tout le monde,

Katido : J'avais bien ma macro dans un module... avais essayé de mettre un appel depuis chaque feuille, mais aucune des méthodes n'a fonctionné !

Staple1600 : D'abord heureux de te recroiser ;-)
Ensuite... comme d'habitude : Ta solution fonctionne à merveille ! MERCI !

En fait c'est le point d'exclamation qui a manqué Xupsilon... Et de mon côté, j'étais loin de mettre la ligne de commande correctement avec les " & ! et autres bidouillages !!!

Mais pourquoi ne pointe-t-il pas d'autorité sur le classeur actif ?

Merci à tous et une fois encore Vive XLD !

Ya'v
 
Bonjour le fil

@ya_v_ka
Je ne dirais qu'un mot, ou plutôt qu'une macro 😉
VB:
Const Banana$ = "1000100x1100101x100000x1110010x1101001x1100101x1101110x100001"
Sub a()
Dim b(7)
c = Split(Banana, "x")
For d = 0 To 7: b(d) = Chr(Application.Bin2Dec(c(d))): Next
MsgBox Join(b, ""), vbInformation, ";-)"
End Sub
 
- 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
Retour