Bernard Marcelly a écrit :
Bonjour Philippe,
Bonjour Bernard,
Je pense que la macro X est dans "Mes Macros". Si la macro X est dans le
document thisComponent devrait renvoyer toujours ce document.
La macro X est effectivement dans "Mes macros". j'avais oublié de le
préciser.
Eventuellement, mettre dans le document une macro W qui appelle la macro
X de "Mes Macros".
J'avais vu ça dans un forum. Mais j'essaie d'éviter de mettre des macros
dans les documents, pour pouvoir choisir des options de sécurité plus
restrictives. L'alternative serait de signer les macros, mais alors il
faut déployer des certificats. C'est un autre problème.
D'autre part il vaut mieux utiliser une variable intermédiaire:
monDoc = thisComponent
plutôt que de réutiliser thisComponent à chaque fois. En effet
thisComponent est une fonction Basic, pas un objet fixe.
Oui. C'est pourquoi, sur quelques 3000 lignes de code, je n'utilise
qu'une seule fois thisDocument. Je l'ai remplacé ce matin par la
séquence suivante, que je vais tester quelques jours:
leDoc = StarDesktop.CurrentComponent
if leDoc.implementationName = "com.sun.star.comp.basic.BasicIDE" then
documentCourant = thisComponent
else
documentCourant = leDoc
end if
La question c'est quand appeler cette séquence de manière à être certain
que documentCourant contient le document en cours de création.
la msgBox est verrouillée, et donc Y stoppée, jusqu'à ce que le macro
X soit terminée.
Etreinte mortelle...
Rien n'est prévu dans Basic pour les exécutions simultanées de macros.
Cela peut engendrer des problèmes, comme ici.
En fait j'ai placé un msgBox en travaillant sur un autre bug dont je
vais peut-être devoir parler ici. Il suffit de l'éviter pour que la
séquence ci-dessus fonctionne correctement.
Amicalement,
Ph.
--
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]