Page 1 sur 1

[Résolu][Base] Fermer un formulaire automatiquement

MessagePublié: 19 Jan 2012 11:31
par masirkkisoi
Bonjour à tous,

J'explique mon (nième) soucis, j'aimerais que quand j'ouvre un formulaire via un bouton (code fonctionnel) le premier formulaire se ferme ainsi la navigation sera plus simple pour l'utilisateur.
J'ai essayé de bidouiller avec les aides qu'il y a sur ce suprême de code :http://user.services.openoffice.org/fr/forum/viewtopic.php?f=15&t=6355 mais je n'ai réussi à rien.

Quelqu'un a t'il une idée ?

Voici le code de ma macro qui permet d'ouvrir un formulaire :

Code : Tout sélectionner   AgrandirRéduire
REM  *****  Ouvrir un formulaire et ferme l'ancien  *****

Sub OuvrirFormulaire(evt As Object)
   Dim dbDoc As Object, lesFormulR As Object, docFormulaire2 As Object
   Dim bouton As Object, nomFormulaire As String
   
   ConnecterSource() 'connection a la BDD
   
   bouton = evt.Source
   
   'on récupère le nom du formulaire à ouvrir qui se trouve dans le champ complément d'information du bouton
   nomFormulaire = bouton.Model.tag
   
   dbDoc = ThisDatabaseDocument
   lesFormulR = dbDoc.FormDocuments
   
   If lesFormulR.hasByName(nomFormulaire) Then
      docFormulaire2 = lesFormulR.getByName(nomFormulaire)
      docFormulaire2.open
   Else
      MsgBox ("Formulaire inconnu : " & nomFormulaire, 16)
   End If
   
   DeconnecterSource() ' Deconnection de la BDD
End Sub

'*****************************************************************************************************

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 19 Jan 2012 14:20
par Piaf
re Bonjour

ça devrait le faire

Code : Tout sélectionner   AgrandirRéduire
Sub OuvertureFermeture( oEvent as variant )

   ThisDatabaseDocument.FormDocuments.getByName( "nom_du_formulaire_à_ouvrir" ).open
   ThisDatabaseDocument.FormDocuments.getByName("nom_du_formulaire_à_fermer").close
   
end sub


tirer du suprême de code [Base]ouverture et fermeture d'un formulaire

A+

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 19 Jan 2012 14:25
par masirkkisoi
Oui mais est-ce possible de généraliser la fermeture à n'importe quel formulaire ? Comme c'est le cas pour mon ouverture où il y a 1 macro pour tous les Forms.

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 19 Jan 2012 17:48
par Dude
Salut,

masirkkisoi a écrit:Oui mais est-ce possible de généraliser la fermeture à n'importe quel formulaire ?

Et bien, tu passes le nom de ton formulaire en paramètre. Où est le problème ?

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 08:55
par masirkkisoi
Salut Dude,

je comprends mais comment récupérer le nom du formulaire courrent ? (celui où se trouve le bouton pour ouvrir le 2eme formulaire) J'ai lancé une recherche avec les mots clés : "récupérer nom formulaire" mais elle n'a pas aboutie.

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 09:26
par jeanmimi
Le nom du formulaire courant, ou pas, est celui sous lequel tu l'as enregistré dans ta base.
En reprenant le code
Code : Tout sélectionner   AgrandirRéduire
REM ****** Ouverture et fermeture du formulaire "NouveauCompteMandatement") *****
Sub OuvertureFermetureNouveauCompteMandatement( oEvent as variant )

   ThisDatabaseDocument.FormDocuments.getByName( "NouveauCompteMandatement" ).open
   ThisDatabaseDocument.FormDocuments.getByName("NouveauCompteMandatement").close
   
end sub
REM ****** Ouverture et fermeture du formulaire "NouveauCompteOrdonnateur") *****
Sub OuvertureFermetureNouveauCompteOrdonnateur( oEvent as variant )

   ThisDatabaseDocument.FormDocuments.getByName( "NouveauCompteOrdonnateur" ).open
   ThisDatabaseDocument.FormDocuments.getByName("NouveauCompteOrdonnateur").close
   
end sub

etc ...
et tu affectes la bonne Macro au bouton à cliquer

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 09:31
par masirkkisoi
Ok donc si je comprend bien il faut que je fasse une macro "fermeture" pour chaque formulaire que je veux fermer ? Je voulais juste savoir s'il était possible d'en faire qu'une seule pour tous les formuliares.

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 09:44
par jeanmimi
Oui, pour illustrer, j'ai inséré un bouton dans les 2 formulaires cités ci-dessus pour fermer le formulaire.

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 09:51
par masirkkisoi
Merci de te pencher sur mon problème mais ce n'est pas ce que je veux.

J'aimerais que le formulaire se ferme quand le 2eme s'ouvre et non un bouton fermer.

Désolée d'être exigente :? c'est possible que je m'exprime mal aussi... :(

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 10:22
par jeanmimi
J'aimerais que le formulaire se ferme quand le 2eme s'ouvre et non un bouton fermer
Ça doit être possible par Outils > Personnaliser et choisir l'Événement idoine, mais question : comment le formulaire qui s'ouvre va connaitre le nom de celui qui doit être fermé ?
Un clic sur un bouton te semble trop compliqué pour les utilisateurs ?

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 10:38
par masirkkisoi
Ce n'est pas le formulaire qui s'ouvre qui est concerné mais celui qui se ferme, non ? Car le bouton qui permet d'ouvrir le 2eme formulaire est sur celui qui doit se fermer.

jeanmimi a écrit:
Un clic sur un bouton te semble trop compliqué pour les utilisateurs ?


Ce n'est pas ça mais je trouve plus facile de naviguer quand la fenêtre se ferme au moment où l'on ouvre une nouvelle, comme par exemple quand tu ouvres "Poste de Travail" sur ton bureau et que tu clique sur C, la fenêtre Poste de Travail est remplacée par la fenêtre que tu viens d'ouvrir.

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 12:06
par pancho
Bonjour,
Pour fermer un formulaire lorsque l'on clique sur un bouton, il existe une solution sans macro.
Dans les propriétés du bouton :
- Champ Action : choisir "ouverture d'un document ou d'une page web"
- Champ URL : .uno:CloseWin

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 12:26
par jeanmimi
Certes, mais ici, la demande est la fermeture automatique d'un formulaire ouvert lorsqu'un deuxième formulaire s'ouvre.
Donc, pas de bouton, mais j'aime bien ta solution sans Macro

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 12:32
par Piaf
Bonjour

peut être une solution donnée par jerome bourgeois dans http://user.services.openoffice.org/fr/forum/viewtopic.php?f=26&t=18473

Code : Tout sélectionner   AgrandirRéduire
Sub OuvrirFormulaire(evt As Object) '*** assignée au déclenchement du bouton

   Dim lesFormulaires As Object, leFormulaire As Object
   Dim bouton As Object, appel As String, courant as String
   
   bouton = evt.Source
   appel = split(bouton.Model.tag,";",2)(0)
   if instr(1,bouton.Model.tag,";") then courant = split(bouton.Model.tag,";",2)(1)
   
   lesFormulaires = ThisDatabaseDocument.FormDocuments
   if lesFormulaires.hasByName(appel)  then
      leFormulaire = lesFormulaires.getByName(appel)
      leFormulaire.open
   else
        MsgBox("Formulaire inconnu : " & appel, 16)
        exit sub
   end if
   
   GererBarresOutils(appel)
   if thisDatabaseDocument.FormDocuments.hasByName(courant) then FermerFormulaire(courant)   
   
End Sub

Sub FermerFormulaire(nomFormulaire) '*** appelée par OuvrirFormulaire

   thisDataBaseDocument.FormDocuments.getByName(nomFormulaire).close

End sub


en renseignant le complément d'information du bouton avec le nom du formulaire à ouvrir, celui du formulaire à fermer séparer par un point virgule;

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 12:42
par jeanmimi
du bouton
Ici, la demande est sans bouton

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 13:03
par Piaf
bonjour
masirkkisoi a écrit:quand j'ouvre un formulaire via un bouton


je parlais de ce bouton.

ce que j'ai compris de la demande:
on a un Bouton de commande sur un formulaire qui déclenche l'ouverture d'un second formulaire.
on voudrait que ce bouton déclenche effectivement l'ouverture du second formulaire et en plus ferme le premier.

mais j'ai peut être mal compris
 Ajout : un petit exemple Pour illustrer mon propos.
OvertureFermeture.odb
(19.85 Kio) Téléchargé 351 fois
 

A+

Re: [Base] Fermer un formulaire automatiquement

MessagePublié: 20 Jan 2012 13:38
par masirkkisoi
Non Piaf tu as tout à fait compris :wink: Encore mercis pour votre aide les gens je ne sais pas se que je ferais sans vous !

Je teste et je vous dis quoi. :D

 Ajout : Je viens de tester et je dis Amen ! :super: Merci beaucoup ça marche nikel chrome !