Appel sous formulaire

Résolu
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 - 26 avril 2006 à 15:12
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 28 avril 2006 à 11:25
bonjour,
j'aimerai savoir quel est la ligne de commande pour faire appel a un sous formulaire etant mis sous forme de tableau dans un autre formulaire.
Merci

11 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
27 avril 2006 à 19:24
Salut 739132 rodrigue62, salut =182298 asecher ,

soit :
Forms("NomDuForm").ctlNomDuSousForm.Form.allowedits
soit :

Form_NomDuForm.ctlNomDuSousForm.allowedits


en DeepPink, les noms que tu dois adapter à ton cas.

à+

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
3
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
27 avril 2006 à 22:42
Pour répondre rapidement à ta question :
- mets des guillemets si j'en ai mis.
- ctl est un préfixe, lié à certaines conventions de codage, et dénotant le type de la variable.

Pour répondre plus précisément :
Pour gérer un sous-formulaire sous Access, il faut déjà créer 2 formulaires, frmParent et frmEnfant (l'un contiendra l'autre).
Pour que l'un contienne l'autre, il faut situer (la situation, c'est la terminologie Microsoft pour dire qu'un contrôle est dans un conteneur [ici, un formulaire]), sur ce formulaire frmParent, le formulaire frmEnfant. Mais, comme je l'ai ecrit entre parenthèses, sur un formulaire, on ne peut situer qu'un contrôle (et pas un formulaire).
Access met à notre disposition un contrôle conteneur Sous-Formulaire (de type SubForm), qui sera l'intermédiaire entre frmParent et frmEnfant. Nous appellerons ce contrôle sfrmConteneur.

En résumé, on a un formulaire frmParent, qui situe un contrôle sous-formulaire sfrmConteneur, qui, lui-même, héberge un formulaire frmEnfant.

A partir du code du formulaire frmParent, pour accéder aux propriétés du sfrmConteneur (parce qu'il a ses propres propriétés [cette précédente locution est un exercice de diction]), on écrit, par exemple :

'Là on accède à une interface de type Control (typé faible), liaison tardive (on ne connait
'pas, à la conception, les propriétés et méthodes disponibles), et en exécution, elle se 'transtypera en un type SubForm.
Me.Controls("sfrmConteneur").Enabled = False '     verrouille le contrôle conteneur
'Là on accède à une interface de type SubForm (typé fort), liaison précoce (on connait,
'à la conception, les propriétés et méthodes disponibles).
Me.sfrmConteneur.Enabled = False '                       accès direct à la variable implicite d'instance

Toujours du même endroit, pour accéder aux propriétés du formulaire frmEnfant, on écrit par exemple :

'Là on accède à une interface de type Form (typé faible), qui se transtypera, à l'exécution, en
'un type frmEnfant.
Me.Controls("sfrmConteneur").Form.AllowEdits = True
Me.sfrmConteneur.Form.AllowEdits = True

Si le frmEnfant avait situé un contrôle de type TextBox, et nommé txNom, pour accéder à ce contrôle, toujours du même endroit, on écrit :

'interface de type Control (typé faible)
Me.Controls("sfrmConteneur").Form.Controls("txtNom").Text = "DUPOND"
'interface de type TextBox (typé fort)
Me.sfrmConteneur.Form.txtNom.Text = "DUPOND"

PS : une interface est un contrat. Cad, si, moi, contrôle, je dis que j'expose l'interface de type TextBox, je dois renvoyer ma valeur quand on appelle ma propriété .Text, et je dois répondre à toutes les propriétés, méthodes et évènements qu'un contrôle de type TextBox expose.

PS2 : un contrôle a le droit de dire qu'il répond à plusieurs interfaces (qu'il remplit plusieurs contrats). Donc, un contrôle de type SubForm peut aussi (en même temps) être de type Control (idem pour un TextBox). L'interface de type Control est donc très générique, et est exposée par de nombreux (pour ne pas dire tous) contrôles (elle est donc de type faible).

cette faculté qu'ont les objets de types différents (TextBox, ListBox, ...) à exposer une même interface (Control) s'appelle le polymorphismel'héritage d'interface.

si après ça, tu as une autre question, tant pis pour toi, je te préviens, je t'aurais prévenu :)

PS4 : normalement, pendant tout le temps que j'ai mis à écrire, tu as dû trouver comment il fallait écrire (avec ou sans guillemets)! Donc, je fais un refresh de la file de messages de ce sujet, et si tu as répondu que tu as trouvé, je jette mon message à la poubelle, sinon...

à+
rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
3
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
26 avril 2006 à 15:28
LIRE LE REGLEMENT DU SITE

Sous quel langage es-tu ?
As-tu recherché sur le site une réponse à ton problème?

Cordialement,

Alain 31
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011
26 avril 2006 à 15:44
oui j'ai fait une recherche vitte fait a l'aide du moteur de recherche mais je n'ai rien trouvé. Je suis sous VBA pour access, en fait je fais des autorisation de modification dans mon formulaire a l'aide la commande Me.allowedits=true (ou false en fonction de ce que l'on veut) mais j'aimerais faire pareil pour un sous formulaire, j'ai essayé de remplacer le [Me] par le nom du sous formulaire mais il doit manquer quelquechose car ca ne marche pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011
27 avril 2006 à 20:41
merci rvblog mais dois je mettre les noms de formulaire et sous-formulaire entre guillemets? et qu'est ce que le ct1 avant le nom du sous-formulaire? par quoi dois je le remplacer?
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011
28 avril 2006 à 08:35
Desolé tu vas dire que je suis vraiment nul mais j'y arrive pas, mon formulaire s'appel MOIS_CONCERNÉ et mon sous formilaire est CONCERNÉ_PAR Sous-formulaire j'ai donc enté l'instruction suivante en m'inspirant de ton model,

Form_MOIS_CONCERNÉ.ctlCONCERNÉ_PAR.AllowEdits = True

mais ca ne marche pas, si tu vois ou est l'erreur pourrais tu m'aider a la rectifier? merci pour toute ton aide.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 avril 2006 à 10:07
Quoi, tu n'as pas lu !
:)
- quel est le nom du contrôle de type SubForm sur le formulaire MOIS_CONCERNÉ?
- quel est le nom du formulaire qui deviendra sous-formulaire (le nom qu'Access t'a demandé la 1ère fois que tu l'as enregistré, qui est le même nom que celui que tu vois dans la liste des formulaires de la base de données)?

tu ne peux pas répondre la même chose à ces 2 questions. Tu peux, mais je ne te le conseille pas!

à+

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011
28 avril 2006 à 10:23
non, 'MOIS_CONCERNÉ' est le formulaire contenant le sous formulaire. Le nom du sous formulaire est 'CONCERNÉ_PAR' et le nom que je vois dans la liste des formulaires est 'CONCERNÉ_PAR Sous-formulaire'
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 avril 2006 à 11:14
Form_MOIS_CONCERNÉ.Controls("CONCERNÉ_PAR").Form.AllowEdits = True

évites à tout prix les noms avec des accents, ou avec des espaces.

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011
28 avril 2006 à 11:20
Ok merci ca marche impecable, oui j'eviterai la prochaine fois les accents et espace, mais la ci je change va falloir que je retrouve tous le code ou je fait appel aux noms. Encore merci pour ta patience et ton aide precieuse.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 avril 2006 à 11:25
je t'en prie, c'est toujours un plaisir.

à+

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
Rejoignez-nous