Passage de valeur d'un formulaire à un autre [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
18 mars 2005
-
Messages postés
29
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
6 août 2004
-
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

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
10
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
18 mars 2005

Impeccable, ça fonctionne.

Merci pour le tuyau !

Bonne journée
Messages postés
29
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
6 août 2004

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