[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]

Répondre à