Bonjour, Voici mon problème. J'ai plein de macro VBA à exécuter directement depuis un bouton, ou depuis une dll (VB.net). La chose serait simple si je pouvais utilisé le Lisp, mais la contrainte est de NE PAS utiliser le Lisp. Et lorsque j’exécute ces macros, je n'arrive pas à faire que la commande soit la dernière exécutée et la répéter avec la touche "Enter". Dans un bouton d'une barre d'outil j'ai par exemple essayer ceci:
^C^C^P(vl-vbarun "FichierMacro.dvb!modCommande.SelectionClasseurDocument") "Structure";^P
ou encore
^C^C^P-vbarun "FichierMacro.dvb!modCommande.SelectionClasseurDocument" "Structure";^P
mais après avoir utilisé le bouton, la dernière commande que la touche "Enter" execute est seulement -VBARUN sans tout le reste et ceci dans les 2 cas... Donc je me suis tourner vers le .net, et crée une dll que je charge avec un script, au démarrage. Dans ma dll j'execute les macro de cett façons
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Public Class MesCommandeAutoCAD
<CommandMethod("SelectionClasseurDocument")> Public Sub SelectionClasseurDocument()
Application.DocumentManager.MdiActiveDocument.SendStringToExecute("-Vbarun ""FichierMacro.dvb!modCommande.SelectionClasseurDocument"" ", True, False, False)
End Sub
End Class
J'avais espère que la dernière commande utilisé serai la commande de la dll, cependant il n'en est rien, c'est le même problème qu'avec un bouton. C'est à nouveau le -VBARUN en solo qui est répété lorsque l'on presse la touche "Enter". Mais je me dis: Je suis en VB.net ! Et selon tout ce que je lis ci et là, c'est très puissant. Je pourrais par exemple ajouter un bout de code pour réécrire cette liste des dernières commandes utilisés ? Ou peut-être existe-il une variable, un paramètre ? ou alors encore une autre méthode pour exécuter du VBA depuis le .net ? Et voila la raison de ce poste, je cherche, mais je n'ai pas trouvé, alors je vous demande de l'aide, ou une piste à explorer. PS: au risque de me répéter, avec le Lisp je sais le faire, mais je dois le faire sans pour des raison indépendante de moi.