[Résolu][Base] Ouvrir un Formulaire avec un Bouton

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

[Résolu][Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour à vous,
Je suis nouveau sur ce Forum, débutant sur libreoffice base, je maintient les requêtes, les formulaires, une bonne partie du code SQL.
J'ai réalisé une base de données sur libreOffice Base. Je veux réaliser sur mon formulaire des boutons qui m'ouvrent des formulaires (liés à des requêtes). En cherchant, j'ai vu que c’était possible en utilisant des macros... et en principe la commande n'est pas d'une complexité folle... mais j'y suis depuis maintenant plusieurs semaines... sans résultat.... je connais le suprème de code de Dude, mais, la macro, adaptée à ma base n'ouvre pas le formulaire et me génère des erreurs dont la liste serait fastidieuse ici.
La base ci joint est le meilleur résultat que j’obtiens. Rien ne s'ouvre, mais je n'ai pas de message d'erreurs....
Je viens vers vous car, après des jours passés sur le net,je n'entrevois plus aucune solution....

Merci infiniment de votre aide......
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Bonjour et bienvenue sur le Forum
Un peu de lecture peut-être [Base] Ouverture et fermeture de formulaire
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour, et merci de votre retour.
J'ai déjà lu ce lien maintes fois, copier les codes, essayé de modifier des bouts de code.... Comme dit dans mon message, j'ai travaillé pendant de longues heures sur le suprême de "Dude" et les liens qu'il a généré, y compris des bouts de code "manquants" dixit certain internautes...
Rien ne fonctionne.... je donne un exemple de ma base de données, car là, je n'ai plus aucun espoirs....
Merci de votre aide....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Re
CCC94 a écrit :J'ai déjà lu ce lien maintes fois
Ah bon ?
Uniquement pour ouvrir le formulaire GrandCOLLER :

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER()
	thisDatabaseDocument.formDocuments.getByName("F_GrandCOLLER").open
end sub
Pour ouvrir le formulaire GrandCOLLER sur le même enregistrement que celui du formulaire Principal en cours :

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER(oEv as Object)
Dim oForm as Object, fGC as Object
	oForm = oEv.Source.Model.Parent
	Identifiant = oForm.getByName("fmtID").CurrentValue
	fGC = thisDatabaseDocument.formDocuments.getByName("F_GrandCOLLER").open
	With fGC.DrawPage.Forms.getByName("MainForm")
		.Filter="""ID"" =" & Identifiant       
		.Applyfilter = True
		.reload
	End With	
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonsoir,
ça ne change rien.... j'ai copier/coller le code, mon bouton reste toujours inactif.....
Merci tout de même.....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Le deuxième code ne fais pas plus... Aucune "erreurs" mais rien ne bouge...
Si vous avez une idée... elle est bienvenue....
Merci....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Le deuxième code ne fais pas plus... Aucune "erreurs" mais rien ne bouge...
Si vous avez une idée... elle est bienvenue....
Merci....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Re
Les deux procédures fonctionnent chez moi sur ta base exemple.
Les macros sont-elles activées ?
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Aieee.... c'est peut être là le problème.... comment vérifie t'on que les macros sont activées ??
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Waouououo mon sauveur..... 3 semaines de galère parce que les macros étaient en mode sécurité ??? je donne le détail pour tous ceux qui seraient comme moi :
Menu Outil -> Option-> sécurité -> sécurité des macros -> Faible (toutes les macros vont être exécutées sans confirmation).*
J'ai juste encore deux petites questions :

1) par contre, que je place l'un ou l'autre des deux codes, le formulaire s'ouvre de la même façon. quelle est la différence ?

2) autre question : pour programmer 10 boutons différents (chacun des boutons appelant un formulaire différent), je place (copier/coller) le même code (en changeant le nom des formulaires) dans la même macro ?

Merci infiniment, je rame gravement depuis trois semaines. Vous êtes réellement mon sauveur....
Merci de vos réponses...
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Re
CCC94 a écrit :quelle est la différence ?
La première procédure ouvre le formulaire sur le premier enregistrement, le formulaire n'est pas filtré.
La seconde ouvre le formulaire et le filtre sur le même enregistrement que le formulaire principal.
CCC94 a écrit : je place (copier/coller) le même code (en changeant le nom des formulaires) dans la même macro ?
Le plus simple serait de ne faire qu'une même macro pour les dix boutons en allant récupérer le nom du formulaire dans la propriété Complément d'information des boutons.
Tag.png

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER(oEv as Object)
Dim oForm as Object, fGC as Object, nomForm as String
	nomForm = oEv.Source.Model.Tag
	oForm = oEv.Source.Model.Parent
	Identifiant = oForm.getByName("fmtID").CurrentValue
	fGC = thisDatabaseDocument.formDocuments.getByName(nomForm).open
	With fGC.DrawPage.Forms.getByName("MainForm")
		.Filter="""ID"" =" & Identifiant       
		.Applyfilter = True
		.reload
	End With	
End Sub
Attention au nom du formulaire dans l'interface et à celui interne.
Dans ta base exemple, le nom dans l'interface est F_GrandCOLLER et le nom interne est
Nominterne.png
le plus simple étant de donner le même nom aux deux instances.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Merci beaucoup de toutes ces infos.... je ne comprends pas cette histoire de "filtré" ou pas... mais surtout je ne vois pas comment faire une seule macros qui ouvre 10 formulaires différents. J'ai essayé le code que tu m'as donné

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER(oEv as Object)
Dim oForm as Object, fGC as Object, nomForm as String
   nomForm = oEv.Source.Model.Tag
   oForm = oEv.Source.Model.Parent
   Identifiant = oForm.getByName("fmtID").CurrentValue
   fGC = thisDatabaseDocument.formDocuments.getByName(nomForm).open
   With fGC.DrawPage.Forms.getByName("MainForm")
      .Filter="""ID"" =" & Identifiant       
      .Applyfilter = True
      .reload
   End With   
End Sub
mais je ne vois pas comment ne pas répéter 10 fois ce code avec le nom de chaque formulaire....
Merci en tous cas.....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par DLE »

Bonjour,

Le nom du formulaire à ouvrir est fourni par

Code : Tout sélectionner

nomForm = oEv.Source.Model.Tag
Tag est défini dans les propriétés du bouton, onglet "Général", "Complément d'information". Cf. copie-écran.

Cdlt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour,
même si le début de mon code commence par :

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER(oEv as Object)
La macro pourra ouvrir un formulaire dont le nom sera différent (genre F_UnAutreNom)
si je défini le nom d'un autre formulaire (genre F_UnAutreNom) dans les propriétés du bouton ?

Merci du retour....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par jeanmimi »

CCC94 a écrit :si je défini le nom d'un autre formulaire (genre F_UnAutreNom) dans les propriétés du bouton ?
Oui, c'est l'avantage de la Macro Ouverture par tag.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Waouououo alors ça... c'est super...j'essaye ça au plus vite...
Merci infiniment....
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour,

J'ai appliqué le code à ma base modèle que j'ai renomé CCC94-@2.odb C'est super, ça fonctionne !!!
J’étais tellement content, que je l'applique à ma base réelle de + de 1000 fiches... et là depuis tôt ce matin... impossible...
J'ai réécris, j'ai fais des copier/coller, je vérifie le moindre détail, et j'ai cette erreur... Photo :
ERREUR LibreOffice Macro.jpg
Je deviens fou.......
Si vous avez une idée.... Merciiiii
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par DLE »

Bonjour,

D'après le message d'erreur, il n'y a pas de contrôle nommé "fmtID" dans le formulaire "F_PRINCIPAL".

Cdlt.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour,
Oui mais avec la base "Exemple" (CCC94) qui émane de la base définitive sur laquelle j'ai enlevé des fiches et des formulaires, ça fonctionne....
Et comment faire pour ajouter un contrôle "fmtID" dans le formulaire "F_PRINCIPAL" ??

Merci du retour...
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par DLE »

Re,

Dans le document ci-joint, il y a une copie-écran de chaque formulaire de votre base montrant le contrôle "fmtID".
Comparer avec base réelle, la présence de ce contrôle, l'orthographe et la casse (majuscule, minuscule).

Cdlt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Merci, mes les le contrôles "fmtID" sont OK sur tous les formulaires... j'ai maintenant d'autres codes d'erreurs qui ne sont pas les memes sur l'édition macro
CCC94 Nouvelle Macro A.jpg
et sur le formulaire ou se trouve le bouton....
CCC94 Nouvelle Macro B.jpg
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Pardon, pardon....l'erreur sur le formulaire, j'ai trouvé, c'était de ma faute...
mais j'ai maintenant ça sur clic du bouton
CCC94 Erreur Macro sur bouton du formulaire.jpg
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Bonjour
Merci de fournir une base sans données confidentielles reproduisant le problème.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Bonjour,
La voici...
Je m'arrache les cheveux...

Merci du coup de main....
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Re
Je présume que ton formulaire Accueil est un menu pour ton application, dans ce cas, il n'a aucune raison d'être basé sur une table.
Donc supprime la macro sur l'ouverture du formulaire.
Ensuite tu veux filtrer le formulaire principal sur un champ qui n'existe pas dans le formulaire Accueil.
Pour ouvrir le formulaire principal à partir d'Accueil,

Code : Tout sélectionner

Sub OuvrirDepuisAccueil(oEv as Object)
Dim nomForm as String
	nomForm = oEv.Source.Model.Tag
	thisDatabaseDocument.formDocuments.getByName(nomForm).open
End Sub
suffit.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Merci, Merci et bravo...
Tout fonctionne. Mais là je commence à lâcher niveau compréhension...
Je comprends très bien que mon formulaire F_ACCUEIL n'es est pas un et qu'il a donc rien à faire des milliers d'infos de ma table... de là à générer des codes d'erreurs...
Ensuite tu veux filtrer le formulaire principal sur un champ qui n'existe pas dans le formulaire Accueil.
Je ne filtre pas dans le formulaire principal, c'est le seule formulaire ou je prends toutes les données de la table... je ne filtre rien...
Bon ça je ne comprends pas.... là pour moi c'est de la magie.... mais elle fonctionne....

Encore mille mercis...
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Re
CCC94 a écrit : de là à générer des codes d'erreurs..
Les erreurs viennent du fait que tu as affecté la macro openform lors du chargement du formulaire Accueil.
CCC94 a écrit :e ne filtre pas dans le formulaire principal, c'est le seule formulaire ou je prends toutes les données de la table... je ne filtre rien...
Si tu utilises la macro onClickOuvrirF_PRINCIPAL, il te faut d'une part récupérer l'identifiant dans le formulaire qui appel la procédure et d'autre part, le formulaire principal est filtré en fonction de cet identifiant

Code : Tout sélectionner

      .Filter="""ID"" =" & Identifiant       
      .Applyfilter = True
Il n'y a aucune magie la-dedans :)
Plutôt que de t'arracher les cheveux sur les macros et les formulaires, tu devrais peut-être travailler d'abord sur tes tables.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Merci, merci des retours... les tables, ça va, mais le langage des macros... :fou:
je cherche de la même façon à ouvrir iun rapport depuis la même page "F_ACCUEIL" depuis deux jour, et je ne sais pas comment adapter ce code :

Code : Tout sélectionner

Sub onClickOuvrirF_GrandCOLLER(oEv as Object)
Dim oForm as Object, fGC as Object, nomForm as String
   nomForm = oEv.Source.Model.Tag
   oForm = oEv.Source.Model.Parent
   Identifiant = oForm.getByName("fmtID").CurrentValue
   fGC = thisDatabaseDocument.formDocuments.getByName(nomForm).open
   With fGC.DrawPage.Forms.getByName("MainForm")
      .Filter="""ID"" =" & Identifiant       
      .Applyfilter = True
      .reload
   End With   
End Sub
pour ouvrir un rapport ? est ce que c'est possible ? j'essaye depuis un moment, je cherche sur le net, mais je ne trouve rien... pourtant... ça doit être possible ??

Merci du retour.
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par Piaf »

Bonjour

Code : Tout sélectionner

Sub OuvrirRapportDepuisAccueil(oEv as Object)
Dim nomRapport as String
	nomRapport = oEv.Source.Model.Tag
	thisDatabaseDocument.reportDocuments.getByName(nomRapport).open
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
CCC94
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 avr. 2019 15:59

Re: [Base] Ouvrir un Formulaire avec un Bouton

Message par CCC94 »

Merci infiniment de ton aide précieuse. Peut être ces codes dans le "suprème de code", je pense que beaucoup les cherchent ....
A bientôt...
LibeOffice Base 4.3.5.2 sous Mac OS 10.6.8 Par Obligation