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]

Répondre à