Passage de valeur d'un formulaire à un autre

Résolu
loots007 Messages postés 10 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 18 mars 2005 - 27 juil. 2004 à 09:27
lebourgjf Messages postés 29 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 6 août 2004 - 4 août 2004 à 17:11
Bonjour,

Je veux transmettre la valeur contenue par une variable d'un formulaire vers un autre formulaire. Alors je déclare ma variable comme public dans mon premier formulaire :

Public NumFicheSelect As Integer

Puis je stocke ma valeur :

NumFicheSelect = Forms![FRMResult].[ListeFiches]

Puis dans mon deuxième formulaire, alors que le premier est toujours ouvert je fais :

Msgbox "" & NumFicheSelect

Et deux résultat possible :

1/ si j'ai déclaré dans mon deuxième formulaire ma variable comme dans le premier, la valeur affichée est dans n'importe quel cas "0"

2/si je ne déclare rien dans mon deuxième, aucune valeur n'est affichée.

J'ai pris soins de vérifier sur le premier formulaire que ma valeur NumFicheSelect contenait bien quelquechose.

???

Si quelqu'un à une idée ?

Merci d'avance

3 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
27 juil. 2004 à 09:46
Si tu déclare une variable public sur Form1, alors la variable est en faite une propriété de la form1. Donc depuis form2 tu peux l'atteindre par "Form1.NomdelaVariable". Mais il faut que Form1 soit toujorus chargé en mémoire pour que ca marche !!
Le mieux dans ton cas esst de définir ta variable en Public dans un module standard. Depuis Form1 ET Form2, tu l'atteindras par son nom tout simplement.

La cause de tes deux fonctionnement constaté.
1- Tu redéclare la variable dans Form2 : Tu recrées en fait une autre variable (meme si elle a le meme nom) qui est alors une propriété de Form2, alors que la 1ere est une propriété de Form1. Comme par défaut un integer vaut 0, tu donnes une valeur à la propriété de Form1, mais dans form2 tu tapes une propriété de Form2 -qui porte le même nom mais n'est pas la meme variable en fait !!!- qui est un integer non initialisé par toi, donc valant zéro.
2- Soit tu as mis "Option Explicit" en haut de tes module, auquel cas tu dois avoir une erreur te disans que "Nomdelavariable" est non déclaré, soit tu n'as pas de Option Explicit, auquel cas tu à une nouvelle variable, non initialisé, donc valant zéro si tu la considère comme un nombre, une chaine vide si tu la considère comme une chaine et Nul dasn les autre cas. En effet, les variable créées implicitement sont de type Variant !!

Pour info, je te recommande vivement de mettre Option Explicit en haut de tous tes module de code !!!! Cela évite bien des soucis.
Peut se fairte automatiquement par VB : Menu Outil | Options onglet Editeur, cas à cocher Déclaration obligatoire des variables (ce n'est pas rétroactif. Les module déjà créé devront être mis à jur à la main.)
OK ?

Christophe R.
3
loots007 Messages postés 10 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 18 mars 2005
27 juil. 2004 à 10:57
Impeccable, ça fonctionne.

Merci pour le tuyau !

Bonne journée
0
lebourgjf Messages postés 29 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 6 août 2004
4 août 2004 à 17:11
on peut passer aussi par la propriété openArgs du formulaire

DoCmd.OpenForm "form2", , , , , , argument

et dans form2, récupérer la valeur avec :

me.openArgs
0
Rejoignez-nous