At 2004-10-15 19:50, Jovial wrote:
Oui Merci Alain
Si j'ai 2 documents ouverts et que je veux échanger des données entre eux
(lecture écriture de cellules, ajout de lignes> lancement de macro....) il
va falloir que je déclare Mondoc1 et Montdoc2 en Static afin de les
mémoriser entre 2 appels de macro.
Mais la première fois que j'ouvre mon document avec loadcomponent il faut
donc que je vérifie si il n'est pas déja ouvert? et comment?
Est ce la bonne procédure?
Si tu veux garder une information entre deux exécutions de macro (tel que
par exemple deux lancements successifs par un clic d'icône ou un raccourci
clavier), alors il faut déclarer ces variables en Global, en tête d'un module.
Une variable Object est initialisée à Null. Donc il suffit de tester cela
au début.
Global monDoc1 As Object
Sub maBelleMacro
if IsNull(monDoc1) then
charger le document1
end if
le reste du codage...
End Sub
En fin d'utilisation, ne pas oublier de fermer les documents et remettre à
Null les variables globales :
Sub CestFini
Dim mettreNull As Object
monDoc1.Close(true)
monDoc1 = mettreNull
End Sub
Ici l'astuce consiste à utiliser une variable objet non initialisée pour
mettre la valeur Null , car l'instruction suivante renverrait une erreur,
contrairement à un Variant:
monDoc1 = Null ' utilisation incorrecte d'un objet
<pub> Références dans le livre Programmation OpenOffice.org :
Accéder à un autre document, pp 155-156
Portée des variables, pp 50-52
Les variables statiques, p 103
Le type Variant, pp 64-68
</pub>
Bernard