En fait la variable sForm est initialisée dans chaque formulaire avec le nom
du formulaire à fermer.
Dans "Contacts" il est initialisé à "Contacts"
dans "Appels" à "Appels"
dans "Adresses" à "Adresses"
etc

La ligne d'appel de la macro "Fermeture" donne donc après remplacement
oDispatch.executeDispatch( StarDesktop,
"macro://Contacts/Standard.Lanceur.Fermeture(" & sForm & ")", "", 0,
Array() )
                                                                                
        
^              ^                ^              ^
                                                                                
         
I                I                 I                I
                                                                                
 
formulaire      Biblio     Module      Macro
                                                                                
où se trouve
                                                                                
"Fermeture"
oDispatch.executeDispatch( StarDesktop,
"macro://Contacts/Standard.Lanceur.Fermeture(Appels)", "", 0, Array() )

Dans la mesure où tu fermes le formulaire qui pour mon cas est le
formulaire pivôt, "sForm" serait alors initialisée à "Contacts"

Cependant dans la mesure où tu n'as qu'un formulaire à fermer, s'il
s'appelait "Travail" pourquoi n'utilises-tu pas directement la
macro "Fermeture" en la modifiant légèrement ainsi :

Sub Fermeture
Dim oDoc As Object, oFormClo As Object, oDocForms As Object, sForm As String
oDoc = StarDeskTop.getCurrentComponent

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

oFormClo.dispose
End Sub

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".

Cordialement
Jean-Marc

[EMAIL PROTECTED] a écrit :

> [EMAIL PROTECTED] a écrit :
>
>> Bonjour à tous,
>>
>> Je suis à la recherche d'une macro pour fermer un formulaire dans Base.
>> J'ai réussit avec l'enregistreur de macro à recréer les événements
>> standards (enregistrement suivant, précédent etc...) mais impossible
>> d'en créer une pour fermer le formulaire.
>> Je travaille sur un formulaire en plein écran et de ce fait je n'ai
>> plus les petits symboles en haut à droites (notament pour fermer le
>> document)
>>
>> Merci d'vance pour votre aide et bonne journée à tous
>>
>>
>>> J'ai une collection de formulaires. Un formulaire est le formulaire
>>> pivôt qui
>>> gère ouverture et fermeture de l'ensemble de la collection.
>>>
>>> Ce formulaire s'appelle "Contacts", et contient la macro "Fermeture"
>>> dans sa bibli "Lanceur":
>>
>
> >>   '--Fermeture------------------------
>
> >>   Sub Fermeture( sForm As String)
>
>>>    Dim oDoc As Object, oFormClo As Object, oDocForms As Object, Mess As
>>> String
>>
>
>>>    oDoc = StarDeskTop.getCurrentComponent
>>
>
>>>    oDocForms = oDoc.getFormDocuments()
>>>    oFormClo = oDocForms.getByName(sForm)
>>
>
>>>    oFormClo.dispose
>>
>
>>>    End Sub
>>
>
>>> Cette macro est appelée par chaque formulaire, y compris lui-même grâce
>>> à la macro
>>> suivante associée à un bouton de commande :
>>
>
>>>    '--Appel_Fermeture-----------------------
>>
>
>>>    Sub Appel_Fermeture(oEvent As Object)
>>>    Dim oDispatch As Object, sForm As string
>>>    sForm = "Appels"
>>>    oDispatch = createUnoService( "com.sun.star.frame.DispatchHelper" )
>>>    oDispatch.executeDispatch( StarDesktop,
>>> "macro://Contacts/Standard.Lanceur.Fermeture(" & sForm & ")", "", 0,
>>> Array() )
>>>    End Sub
>>
>
>>> Le recours au dispatcher est du au fait que je voulais n'avoir la macro
>>> "Fermeture" qu'en un seul exemplaire dans un formulaire
>>> central.
>>
>
>>> Espérant que cela aide
>>> J-M Delmas
>>
>
> Merci de ton aide mais j'ai quelques soucis à mettre tout cela en
> place pourtant j'ai récrée un formulaire avec le même nom, une blibli
> également et recopié l'ensemble de ton code mais rien ne marche. Même
> pas de message d'erreur.
>
> Je pense que je doit mal paramétrer la seconde macro :
> sForm = "Appels"   <=== dois-je laisser le même nom ?
>
> Pour cette ligne, j'ai tout mis pareil mais mais il dois y avoir un
> soucis quelque part ??
> oDispatch.executeDispatch( StarDesktop,
> "macro://Contacts/Standard.Lanceur.Fermeture(" & sForm & ")", "", 0,
> Array() )
>
> Merci encore de ton aide
> Arnaud POUSSIER
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>

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

Répondre à