OVH Cloud OVH Cloud

Appel d'un formulaire comme un sous-programme

2 réponses
Avatar
Maurice KRAIT
Bonjour,

Ce que je veux dire par appel comme un sous-programme est que je veux
pouvoir ouvrir, depuis une dizaine de formulaires différents mais très
semblables, disons F1, F2, ... FX, un même formulaire SP et à l'issue
de l'utilisation de ce formulaire SP, revenir dans le formulaire FX qui
l'a appelé. Ceci pour éviter d'avoir à créer autant de formulaires
SP¨différents, d'autant que ce formulaire SP est basé sur une requête,
comprend un sous-formulaire, etc, qu'il faudrait multiplier.
Dans le formulaire SP ( le "sous-programme"), après traitement, on
peut, suivant les cas:
- soit revenir au formulaire FX appelant : là c'est simple, il suffit de
fermer SP pour se retrouver dans le FX appelant.
- soit , avant de fermer SP, modifier des élements du formulaire FX
appelant :
- changer la propriété DataEntry du formulaire FX
- changer la propriété Visible d'une zone de
texte ZONE du formulaire FX , sachant que chaque formulaire FX
différent contient une zone de texte de nom ZONE .

Il faut donc qu'à l'appel de SP par chaque FX, on puisse transmettre à
SP le nom du formulaire FX appelant afin de pouvoir accéder à
Forms![NomFX].DataEntry et à Forms![NomFX]![ZONE].Visible.

J'ai fait des tentatives en passant comme paramètre le symbole Me,
mais pour l'instant, je n'ai pas réussi à le faire fonctionner. Ce
serait surement la solution la plus élégante car le code serait alors le
même dans tous les FX.
Je suis en train d'essayer la solution suivante : à l'appel de SP
depuis FX, stocker le nom de FX dans une zone de texte de SP pour
pouvoir y accéder depuis SP; je n'ai pas encore pu faire le test pour
des raisons annexes.
Est-ce quelqu'un aurait une solution à me suggérer pour passer le nom du
formulaire ?

Note : j'utilise Acees 97

Merci d'avance pour toute solution

Maurice

2 réponses

Avatar
Pierre CFI
bonjour
et ben dis donc, pour étre concis (court et précis)....:o))))
si tu as une variable Public NomDuForm

tu pourrais initialiser cette variable par
NomDuForm =Me.name
et tu ouvres ton sous form


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Maurice KRAIT" a écrit dans le message de news:
Bonjour,

Ce que je veux dire par appel comme un sous-programme est que je veux
pouvoir ouvrir, depuis une dizaine de formulaires différents mais très
semblables, disons F1, F2, ... FX, un même formulaire SP et à l'issue
de l'utilisation de ce formulaire SP, revenir dans le formulaire FX qui
l'a appelé. Ceci pour éviter d'avoir à créer autant de formulaires
SP¨différents, d'autant que ce formulaire SP est basé sur une requête,
comprend un sous-formulaire, etc, qu'il faudrait multiplier.
Dans le formulaire SP ( le "sous-programme"), après traitement, on
peut, suivant les cas:
- soit revenir au formulaire FX appelant : là c'est simple, il suffit de
fermer SP pour se retrouver dans le FX appelant.
- soit , avant de fermer SP, modifier des élements du formulaire FX
appelant :
- changer la propriété DataEntry du formulaire FX
- changer la propriété Visible d'une zone de
texte ZONE du formulaire FX , sachant que chaque formulaire FX
différent contient une zone de texte de nom ZONE .

Il faut donc qu'à l'appel de SP par chaque FX, on puisse transmettre à
SP le nom du formulaire FX appelant afin de pouvoir accéder à
Forms![NomFX].DataEntry et à Forms![NomFX]![ZONE].Visible.

J'ai fait des tentatives en passant comme paramètre le symbole Me,
mais pour l'instant, je n'ai pas réussi à le faire fonctionner. Ce
serait surement la solution la plus élégante car le code serait alors le
même dans tous les FX.
Je suis en train d'essayer la solution suivante : à l'appel de SP
depuis FX, stocker le nom de FX dans une zone de texte de SP pour
pouvoir y accéder depuis SP; je n'ai pas encore pu faire le test pour
des raisons annexes.
Est-ce quelqu'un aurait une solution à me suggérer pour passer le nom du
formulaire ?

Note : j'utilise Acees 97

Merci d'avance pour toute solution

Maurice



Avatar
Xavier HUE
Bonjour Maurice,

En passant le nom du form appelant dans OpenArgs
Depuis FX:

DoCmd.OpenForm "SP",acNormal,,,acFormPropertySettings,acWin
dowNormal,"F1"

Dans SP,sur fermeture par exemple
NomFrmAppelant = Me.OpenArgs
Forms(NomFrmAppelant).Controls
("NomDuControleàAtteindre).MethodeOuPropriétéàAppliquer

Ca Aide?
Cordialement.