[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" > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]