VBA : formulaire basé sur modèle

Le
Gloops
Bonjour tout le monde,

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

Jusque là, tout va bien, la création est instantanée par une procé=
dure
CreeTabListe qui crée la table dans la base de données externe et la =

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

en arguments. Ensuite je cherche, avec la même procédure, à créer=
le
formulaire de saisie, et c'est là que ça se gâte.

J'ai créé dans la base courante (la base frontale) un formulaire
frmListe, qui doit servir de modèle.

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 l=
a
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.

Me suis-je trompé quelque part ? Va-t-il falloir choisir entre coder la=

création des contrôles un par un, ou les refaire à la main (ou par =

copier/coller) à chaque table de classe liste ?

ça se passe sous Access 2003 SP2, Windows XP Pro (SP2 aussi je suppose,=

je n'ai pas trouvé confirmation dans msinfo32).
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6380881
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)
Gloops
Le #6335241
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é.

Publicité
Poster une réponse
Anonyme