Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : formulaire basé sur modèle

2 réponses
Avatar
Gloops
Bonjour tout le monde,

Dans une nouvelle base j'ai un certain nombre de tables de classe liste=20
=E0 cr=E9er. J'appelle ainsi des tables qui comportent un champ clef de t=
ype=20
texte, et trois intitul=E9s (qui seront libell=E9s dans trois langues). D=
e=20
l'une =E0 l'autre, la taille de la clef et la taille des intitul=E9s vari=
ent.

Jusque l=E0, tout va bien, la cr=E9ation est instantan=E9e par une proc=E9=
dure=20
CreeTabListe qui cr=E9e la table dans la base de donn=E9es externe et la =

table li=E9e dans la base courante, avec les champs aux tailles fournies =

en arguments. Ensuite je cherche, avec la m=EAme proc=E9dure, =E0 cr=E9er=
le=20
formulaire de saisie, et c'est l=E0 que =E7a se g=E2te.

J'ai cr=E9=E9 dans la base courante (la base frontale) un formulaire=20
frmListe, qui doit servir de mod=E8le.

J'ex=E9cute le code suivant :

Set Frm =3D CreateForm(CurrentDb().Name, "frmListe")
strNomForm =3D Frm.Name
DoCmd.Save acForm, Frm.Name
DoCmd.Close acForm, Frm.Name
DoCmd.Rename "frm" + nomListe, acForm, strNomForm

Le formulaire est bien cr=E9=E9 sous le nom "frm" + nomListe (le nom de l=
a=20
liste =E9tant fourni en argument de la proc=E9dure), mais il est vide.

Bien entendu, le formulaire frmListe contient quatre champs de saisie=20
texte avec les =E9tiquettes associ=E9es, et les deux boutons standard de =

base, OK et Annuler, avec le code pour fermer le formulaire, avec ou=20
sans sauvegarde. Exactement pareil si, dans Outils/Options, cat=E9gorie=20
Formulaires/Etats, je mets "frmListe" comme mod=E8le de formulaires.

Me suis-je tromp=E9 quelque part ? Va-t-il falloir choisir entre coder la=
=20
cr=E9ation des contr=F4les un par un, ou les refaire =E0 la main (ou par =

copier/coller) =E0 chaque table de classe liste ?

=E7a se passe sous Access 2003 SP2, Windows XP Pro (SP2 aussi je suppose,=
=20
je n'ai pas trouv=E9 confirmation dans msinfo32).

2 réponses

Avatar
3stone
Salut,

"Gloops" D
[...]
J'exécute le code suivant :

Set Frm = CreateForm(CurrentDb().Name, "frmListe")
strNomForm = Frm.Name
DoCmd.Save acForm, Frm.Name
DoCmd.Close acForm, Frm.Name
DoCmd.Rename "frm" + nomListe, acForm, strNomForm

Le formulaire est bien créé sous le nom "frm" + nomListe (le nom de la
liste étant fourni en argument de la procédure), mais il est vide.

Bien entendu, le formulaire frmListe contient quatre champs de saisie
texte avec les étiquettes associées, et les deux boutons standard de
base, OK et Annuler, avec le code pour fermer le formulaire, avec ou
sans sauvegarde. Exactement pareil si, dans Outils/Options, catégorie
Formulaires/Etats, je mets "frmListe" comme modèle de formulaires.
------------

L'argument "modèle de formulaire" ne fait qu'utiliser les couleurs,
fonts et autres propriétés du formulaire indiqué...
en aucun cas il n'hérite des controles qu'il pourrait contenir.

Si tu cherche as créer un nouveau formulaire basé sur un modèle,
y compris les contrôles etc. utilise plutôt la méthode "CopyObject"

docmd.CopyObject ,"NewForm",acForm,"FrmListe"

Si j'ai bien compris ta question... ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gloops
3stone a écrit, le 12/11/2007 21:43 :
L'argument "modèle de formulaire" ne fait qu'utiliser les couleurs,
fonts et autres propriétés du formulaire indiqué...
en aucun cas il n'hérite des controles qu'il pourrait contenir.

Si tu cherche as créer un nouveau formulaire basé sur un modèle,
y compris les contrôles etc. utilise plutôt la méthode "CopyObjec t"

docmd.CopyObject ,"NewForm",acForm,"FrmListe"

Si j'ai bien compris ta question... ;-)



Oui, effectivement, c'est bien comme ça que j'ai fini par faire et ça
marche.
Je ne vois ta réponse qu'aujourd'hui, désolé.