[EMAIL PROTECTED] a écrit :

Bonsoir
je viens de faire un test avec la macro fermeture et j'ai un probléme
avec cette ligne

oDocForms = oDoc.getFormDocuments()
"run time error basic "
"propriété ou méthode introuvable"





Jean-Marc à écrit


Dans mon précédent message il y avait ce commentaire :

<<Un détail qui a son importance : J'utilise "StarDesktop" et pas
"ThisComponent". Dans ce cas, tu ne peux pas tester pas à pas
dans l'éditeur de macros. Il n'y a pas d'autre solution pour tester
que de tenter la fermeture du formulaire en lançant la macro
"Fermeture". >>

Je m'aperçois que cet avertissement n'était pas assez
explicite. Excuse m'en, s'il te plaît.

Le message que tu as eu, apparaît systématiquement
quand la macro est lancée à partir de l'éditeur de script
OOBasic, voire quand il est simplement ouvert.
Pour que cela fonctionne il faut que oDoc ait pour URL
e fichier "...\TaBase.odb".

Tous les tests pas à pas donnent pour oDoc, soit l'IDE c'est à
dire l'éditeur de macros, soit le formulaire contenu dans
"TaBase.odb" ce qui ne convient également pas.

Je n'ai trouvé qu'un moyen de vérification :
Pour vérifier le bon fonctionnement, je pars d'une base *
fermée*, voire d'openoffice fermé puis j'ouvre le fichier
"TaBase.odb", je double-clique sur mon formulaire qui
s'ouvre alors. *Note qu'il n'est alors pas en mode
"modification". *

A partir de là, seulement, je lance la macro de fermeture
par "outils", "Macros", "Exécuter", ou bien j'actionne le
bouton auquel la macro est associée . Le message
n'apparaît alors pas et le formulaire se ferme. */Mais il
ne faut pas ouvrir l'IDE de programmation/*.

J'ai été contraint d'utiliser "StarDesktop" car quand le
formulaire est ouvert "ThisComponent" pointe sur le
formulaire ouvert et pas sur le fichier "..\TaBase.odb",
ce qui ne fonctionne alors pas. L'envers de la médaille
est que "StarDeskTop" pointe sur le dernier document
OpenOffice ouvert. Pour être sûr de ne pas perturber le
fonctionnement de la macro, il est donc plus sûr de ne
rien ouvrir d'autre que la base et le formulaire.

Maintenant, si tu trouves que la procédure que je te propose
n'est pas assez sûre, tu peux aussi la blinder de la manière
suivante :

Sub Fermeture2
Dim oDoc As Object, oFormClo As Object, oDocForms As Object
Dim oDocs As Object, sForm As String

oDocs = StarDeskTop.getComponents.createEnumeration
Do While oDocs.hasmoreElements
oDoc = oDocs.NextElement
If Instr(oDoc.URL, "Base.odb") <> 0 Then Exit Do
Loop

oDocForms = oDoc.getFormDocuments()
sForm = "Travail"
oFormClo = oDocForms.getByName(sForm)

oFormClo.dispose
End Sub

Tu vas y arriver. Il y a toujours une solution.
Jean-Marc


Bonjour,
J'ai testé Fermeture2 et cela marche parfaitement.

Je vais abuser un peu plus de ton temps avec une autre question:

Pourrait-on par la même macro fermer la base ?

Arnaud   POUSSIER





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

Répondre à