loots007
Messages postés10Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention18 mars 2005
-
27 juil. 2004 à 09:27
lebourgjf
Messages postés29Date d'inscriptionmardi 16 décembre 2003StatutMembreDerniè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.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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 ?