[EMAIL PROTECTED] a écrit : > > > > [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] > Si, il suffit de rajouter avant le "End Sub", l'instruction
oDoc.Close(True) Slts JMD --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]