Bonjour,
J'ai besoin d'exécuter une macro au chargement d'un formulaire. Il s'agit de contrôler qu'un montant ne dépasse pas un certain seuil.
Si j'attache cette macro dans l'évènement "Ouverture du document", elle s'exécute avant que les informations de la base ne soient chargées dans les champs. Du coup, elle ne peut rien contrôler.
Toute suggestion est la bienvenue
Merci
Exécution après le chargement d'un formulaire
Modérateur : Vilains modOOs
Règles du forum
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 !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
Dr. NOOo
- Membre hOOnoraire

- Messages : 129
- Inscription : 08 sept. 2006 14:03
Exécution après le chargement d'un formulaire
OOo 3.1.0 Linux Ubuntu 9.10
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
-
jeanmimi
- Grand Maître de l'OOffice

- Messages : 17219
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
-
Dr. NOOo
- Membre hOOnoraire

- Messages : 129
- Inscription : 08 sept. 2006 14:03
Merci de ta réponse, mais j'ai testé sur pas mal d'évènement du formulaire et j'ai toujours ce problème du chargement des infos après le lancement de la macro.jeanmimi a écrit :Une suggestion ? Assigner la macro à un autre évènement que l'ouverture du formulaire.
OOo 3.1.0 Linux Ubuntu 9.10
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
-
jeanmimi
- Grand Maître de l'OOffice

- Messages : 17219
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Je n'ai sans doute pas saisi ce que tu veux faire.
Les données dans les champs, tu les saisis bien avec ton formulaire déjà ouvert ?
Et s'il y a un calcul, à quel moment se fait-il ?
Les données dans les champs, tu les saisis bien avec ton formulaire déjà ouvert ?
Et s'il y a un calcul, à quel moment se fait-il ?
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
Dr. NOOo
- Membre hOOnoraire

- Messages : 129
- Inscription : 08 sept. 2006 14:03
C'est un formulaire qui parcourt une table. Lorsque je clique sur les flèches de parcours en bas, je voudrais qu'il y a une macro qui contrôle que le montant ne dépasse pas 150.jeanmimi a écrit :Je n'ai sans doute pas saisi ce que tu veux faire.
Les données dans les champs, tu les saisis bien avec ton formulaire déjà ouvert ?
Et s'il y a un calcul, à quel moment se fait-il ?

OOo 3.1.0 Linux Ubuntu 9.10
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
-
Pierre-Yves Samyn
- Grand Maître de l'OOffice

- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Ton problème ressemble à un autre de la section Base de données.
Si tu veux contrôler l'événement déclenché par les flèches de navigation, il me semble qu'il s'agit des événements avant / après changement d'enregistrement.
Effectivement, une difficulté rencontrée est que cet événement est déclenché à l'ouverture du formulaire (avant même l'événement Chargement) et donc provoque une erreur si on tente d'accéder aux contrôles.
Dans le fil : http://user.services.openoffice.org/fr/ ... 3488#13488
je propose une solution reposant sur le test de la propriété IsLoaded du formulaire : on ne fait le traitement que si le formulaire est effectivement chargé.
Par ailleurs, s'agissant d'un programme contrôlant le changement d'enregistrement (et donc susceptible d'annuler l'événement) il faut savoir :
- que le code associé est déclenché 2 fois.
- que si on souhaite pouvoir annuler l'événement (montant supérieur à 150 dans ton cas), ce n'est pas une procédure mais une fonction qu'il faut associer. Pour annuler l'événement il suffit que la fonction retourne "faux" (cf. toujours le même exemple ci-dessus).
Ton problème ressemble à un autre de la section Base de données.
Si tu veux contrôler l'événement déclenché par les flèches de navigation, il me semble qu'il s'agit des événements avant / après changement d'enregistrement.
Effectivement, une difficulté rencontrée est que cet événement est déclenché à l'ouverture du formulaire (avant même l'événement Chargement) et donc provoque une erreur si on tente d'accéder aux contrôles.
Dans le fil : http://user.services.openoffice.org/fr/ ... 3488#13488
je propose une solution reposant sur le test de la propriété IsLoaded du formulaire : on ne fait le traitement que si le formulaire est effectivement chargé.
Par ailleurs, s'agissant d'un programme contrôlant le changement d'enregistrement (et donc susceptible d'annuler l'événement) il faut savoir :
- que le code associé est déclenché 2 fois.
- que si on souhaite pouvoir annuler l'événement (montant supérieur à 150 dans ton cas), ce n'est pas une procédure mais une fonction qu'il faut associer. Pour annuler l'événement il suffit que la fonction retourne "faux" (cf. toujours le même exemple ci-dessus).
-
Dr. NOOo
- Membre hOOnoraire

- Messages : 129
- Inscription : 08 sept. 2006 14:03
Ah ah ! C'est pour cela que je ne l'avais pas trouvé. On planque des macros dans les autres forums.Pierre-Yves Samyn a écrit :Ton problème ressemble à un autre de la section Base de données.
Merci PYS, je vais tester ton code et tenter de l'adapter.
OOo 3.1.0 Linux Ubuntu 9.10
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
Je n'ai pas besoin de drogue car mes rêves me font déjà assez peur.
-
Pierre-Yves Samyn
- Grand Maître de l'OOffice

- Messages : 11276
- Inscription : 02 mai 2006 08:42
Blague à part c'est une question que je continue de me poser régulièrement. Pour Base en effet, difficile de réaliser une fonction sans passer par un minimum de macro semble-t-il.Dr. NOOo a écrit :Ah ah ! C'est pour cela que je ne l'avais pas trouvé. On planque des macros dans les autres forums.![]()
Pour les autres modules, c'est plus délicat : quand quelqu'un demande une fonctionnalité qui peut être résolue avec une mémorisation voir un code minimum, donner la solution dans le même fil ne me semble pas si mal (pardon grands modérateurs...