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
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 ...
P.
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 !
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
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 ?
@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