Bonjour Galiacy Sébastien
Message du 2005-07-22 14:37:

Toutes les macro sont dans le document

Et la macro lier au bouton est assez simple

MonDocument = ThisComponent
'on Error Resume Next
'MonDocument.Close(True)
'On Error GoTo 0
'MonDocument.setModified(false)
stardesktop.terminate()

La je viens d'essayer celle ci, je n'ai plus le message du fichier modifié et ca ferme bien le document, mais ca plante OOo et j'ai droit au rapport de bug

Petites remarques : ton code ne ferme pas le document puisque les instructions sont en commentaires ;) de plus il faut faire setModified(false) avant de fermer le document, pas après.

Je viens de relire un grand nombre de messages anglais autour de StarDesktop.terminate(). Typiquement, un intervenant dit qu'on doit l'employer pour fermer soffice, un autre se plaint qu'il a un message d'erreur et rapport de bug automatique.

Je pense que c'est une bogue d'OpenOffice.org (qui persiste sur 1.9.113), probablement dûe à ce qu'on se trouve dans une situation bizarre : on vient de fermer le dernier document, mais on continue la macro qui a été lancée depuis ce document. OOo chercher sans doute une référence qui n'existe plus.

Après avoir constaté ce problème sur un document minimal, j'ai mis dans le conteneur soffice une macro qui ne fait que StarDesktop.terminate(). Je ferme tous les documents en laissant la fenêtre OOo. Cette macro est encore accessible. Si je la lance maintenant, OOo se termine bien (plus de processus soffice), et sans erreur.

En conclusion, StarDesktop.terminate() ne marche pas s'il est exécuté depuis une macro lancée par un document. Il marche depuis une macro lancée "en résident".

Alors que faire ? Sous Win XP, je constate que si je me contente de fermer le document par macro _sans_ utiliser StarDesktop.terminate() la fenêtre se ferme, mais il reste un processus soffice. Si je relance OOo en rouvrant le document, il y a encore un seul processus soffice. Si je ferme le document par la macro, la fenêtre se ferme et il y a toujours un processus soffice en cours. Donc on ne perd pas plus de mémoire, alors autant laisser courir, 37Mo de RAM c'est plus rien de nos jours.

Remarque : tout ceci à condition qu'on n'emploie pas le Démarrage rapide d'OOo. Il est impossible de fermer OOo s'il y a le démarrage rapide.

 Bonne journée
   Bernard


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à