12 messages in org.openoffice.fr.progRe: [prog] Fermer un formulaire
FromSent OnAttachments
Arnaud POUSSIERDec 12, 2006 7:17 am 
JMD Jean-Marc DelmasDec 12, 2006 9:11 am 
Arnaud POUSSIERDec 12, 2006 10:27 am 
JMD Jean-Marc DelmasDec 13, 2006 12:03 am 
Arnaud POUSSIERDec 13, 2006 12:21 am 
Arnaud POUSSIERDec 13, 2006 10:05 am 
Arnaud POUSSIERDec 13, 2006 10:07 am 
JMD Jean-Marc DelmasDec 14, 2006 2:15 am 
Arnaud POUSSIERDec 14, 2006 4:04 am 
Arnaud POUSSIERDec 14, 2006 4:12 am 
JMD Jean-Marc DelmasDec 14, 2006 9:18 am 
Arnaud POUSSIERDec 14, 2006 9:24 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Fermer un formulaireActions...
From:JMD Jean-Marc Delmas (jean@centraliens.net)
Date:Dec 14, 2006 2:15:12 am
List:org.openoffice.fr.prog

arna@douane.finances.gouv.fr 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"

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 le 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