XL 2021 Shape & .OnAction

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'
 

ya_v_ka

XLDnaute Impliqué
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'
 

p56

XLDnaute Occasionnel
Bonjour à tous,
Ci-joint une petite démo (avec ce que j'ai compris de la demande)
Un rectangle, qui génère un autre rectangle avec un clic dessus, qui génère un autre rectangle avec un clic dessus, qui ...
Démo_.gif

P.
 

Pièces jointes

  • Demo_shape_clic.xlsm
    15.5 KB · Affichages: 6

ya_v_ka

XLDnaute Impliqué
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'
 

ya_v_ka

XLDnaute Impliqué
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 ?

...
 

Staple1600

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

ya_v_ka

XLDnaute Impliqué
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
 

Staple1600

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

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76