Passage de parametres

nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004 - 14 avril 2004 à 13:03
nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004 - 15 avril 2004 à 10:37
Hello,
j'ai besoin de votre aide :

J'ai deux formulaires FORM1 et FORM2 .

Lorsque je clique sur un bouton de FORM1, j'ouvre le FORM2.
Le but est que l'utilisateur fasse des traitements dans FORM2 et lorsqu'il ferme FORM2 j'aimerais recuperer depuis FORM1 certaines variables du FORM2 qui viens de se ferme.

Comment puis je faire ?
Si mon probleme n'est pas clair dite le moi.

Merci de votre aide

10 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
14 avril 2004 à 13:08
Salut ;O)

Le plus simple est d'utiliser une variable dite Globale que tu déclareras dans un module (exemple):

Public MaVariable As String

Cette variable sera dès lors vue dans tout ton projet.

Tchao

Guy
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
14 avril 2004 à 13:24
Ce n'est pas la meilleure manière je trouve.
Depuis Form1 pour acceder a n'importe quel objet de form2, il suffit d'appeler Form2.NomObjet.
Attention, ca ne marche que pour les objets de Form2 comme un textbox par exemple. Pour les variables internes (genre Dim i as integer) a Form2, la il faudra bien une variable globale...

Finalement, bill gates avait pas completement tort :)

Mindiell Software
http://mindiell.free.fr
mindiell_nospam@free.fr
0
nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004
14 avril 2004 à 13:37
OK Neo.balastik ,
mais c'est ce que je viens de faire, j'ai une variable globale et dans FORM1 je fais :

Dim frm As form2
frm = New form2
frm.Show()
messagebox.show(frm.mavariableglobale)

Le message box est vide parce que l'utilisateur n'a pas eu le temps de faire son traitementavec FORM2. En fait il faudrait faire le messagebox uniquement lorsque l'utilisateur ferme FORM2

Tu vois mon probleme et je me galere
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
14 avril 2004 à 13:58
Et bien dans ce cas, tu copies la dernière ligne (messagebox ...) dans la fonction Form_Unload de Form2

comme frm est une instance de Form2, les procédures définies pour Form2 doivent être compréhensibles par toutes ses instances ...

sur le module de code de Form2

Private Sub Form_Unload(Cancel As Integer)
msgbox ma_variable_globale
End Sub

Manu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004
14 avril 2004 à 14:21
ok ca marche cela mais j'ai besoin d'utiliser cette variable dans le FORM1 et non dans le FORM2.
0
nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004
14 avril 2004 à 14:21
ok ca marche cela mais j'ai besoin d'utiliser cette variable dans le FORM1 et non dans le FORM2.
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
14 avril 2004 à 18:41
Pour Mindiell ,

Tu te trompes sur toute la ligne !!! Une variable locale à une form et déclarée en tant que Public est visible dans tout le projet !!! Faut-il encore que le formulaire soit evidemment chargé.

Si tu as 2 forms : Form1 et Form2

Dans Form2, tu déclares en en-tête ceci :
Public MaVariable as String

Tu ouvres Form2 a partir du Form1, et si dans Form1 tu fais ceci :

Msgbox Form2.Mavariable

Le contenu sera affiché.

Attention avant de t'avancer dans de telles affirmations.

GUy
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 avril 2004 à 00:55
A noter que si form2 est déchargée au moment de l'appel à form2.MaVariable depuis el code de Form1, VB recharge Form2, pour accéder à MaVariable, et elle est donc toujours accessible, meme si Form2 a été déchargée entre temps, MAIS, car il y a un MAIS, comme Form2 est RECHARGEE, MaVariable prend sa valeur par défaut, soit une chaine vide pour une variable de type String !!

Christophe R.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 avril 2004 à 00:58
Mais il existe une solution au pb avec des variables globales à Form2 :
Dans le Query_unload de Form2, mettre cancel à True si l'origine du déchargement n'est pas le code, et masquer form2
Dans form1, lire les valeurs des variables globales sur Form2, puis décharger Form2.

C'est chiant a coder, c'est pas propre, et quitte à déclarer des var globales, autant les mettre dans un module standard, ce sera bien plus simple

Christophe R.
0
nguibout Messages postés 12 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 27 avril 2004
15 avril 2004 à 10:37
Pour Neo.balastik

Tu dit :
Si tu as 2 forms : Form1 et Form2
Dans Form2, tu déclares en en-tête ceci :
Public MaVariable as String
Tu ouvres Form2 a partir du Form1, et si dans Form1 tu fais ceci :
Msgbox Form2.Mavariable

Le contenu sera affiché.

Bien sur le contenu sera affiché mais comment attendre que cette variable soit valuée.
Parce que dans le code je fais un show du FORM2 et ensuite j'affiche la variable mais le probleme c'est qu'il ouvre le FORM2 et directement apres il m'affiche la variable. Alors qu'il faudrait attendre que form2 se referme.
Peut etre existe il des fonction du genre ShellWait, qui executent un code et attendent la fin du code pour passer á l'instruction suivante.

Nicolas
0
Rejoignez-nous