Comment passer un formulaire dans une procédure

firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008 - 20 août 2008 à 18:07
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008 - 22 août 2008 à 14:57
Bonjour,

j'aurais voulu savoir comment passer un formulaire (Form1 par exemple) au travers d'une procédure pour pouvoir l'utiliser ensuite dans la procédure qui se situe dans une classe...

J'ai tenté de déclarer dans la procédure une variable type frmForm as Form1 et en envoi Init(Form1) mais ca ne marche pas...

Merci

25 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 août 2008 à 18:26
salut,

t'étais pas loin...
c'est de type FORM

donc dans un module :
public sub InitFrm(byref oFrm as form)
'tes actions
msgbox oFrm.caption
end sub

et tu appelles par
call InitFrm(Form1)
ou
call InitFrm(me)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 18:28
Hello,

merci pour la réponse, mais il continue à me dire que le type est incompatible....

J'appelle ma classe après l'avoir instanciée de la manière suivante :

Adv.Init(Form1)

Ensuite la procédure dans ma classe est comme tu me la montré:

Public Sub Init(ByRef tmpForm As Form)

j'ai fais une erreur ????
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 18:38
Je devrais peut être préciser que l'appelle de procédure se fait en dehors de la classe....c'est peut être ça le problème ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 août 2008 à 18:46
tu peux montrer un peu plus de code stp
déclaration de la classe, déclarations dans la classe
initialisation de la classe
méthode Init complète

nb : tu es bien en VB6, pas en VBA?
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0

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

Posez votre question
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 18:55
alors en fait voila pour mon code :
Tu m'excuseras mais ça fait un moment que j'ai plus taper de vb et je dois dire que j'ai perdu un peu la main :p

dans ma procédure principale :

Set Adv = New TriPub

Adv.Init (Form1)

Dans la classe :

Option Explicit
Private tmpForm2 As Form

Public Property Let Init(ByRef tmpForm As Form)

tmpForm2 = tmpForm

End Property
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 août 2008 à 19:21
tu peux essayer d'être plus précis de suite qu'on ne fasse pas 50 échanges pour rien?!!

VB6, CERTAIN ?

Set Adv = New TriPub
Adv.Init (Form1)

Où EST LA DéCLARATION?
CE CODE SE TROUVE Où?

et l'erreur, c'est quoi le message exact, et sur quelle ligne ?

ps : SET tmpForm2 = tmpForm

( donc 4 réponses attendues )

pour reprendre mon exemple de départ, chez moi çà fonctionne :

<hr size ="2" width="100%" />'-----
'Form1
'-----
'
Option Explicit
Private adv As New Class1

Private Sub Form_Load()
    adv.InitFrm Me
    adv.InitFrm Form1
    Unload Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set adv = Nothing
End Sub

<hr size="2" width="100%" />'------
'Class1
'------
'
Option Explicit

Public Sub InitFrm(ByRef oFrm As Form)
    MsgBox oFrm.Caption
End Sub
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 août 2008 à 19:25
ok j'ai vu.....

(...)au travers d'une procédure(...)
Public Property Let Init(ByRef tmpForm As Form)

property çà veut dire procédure?

tel quel, c'est
Set Adv = New TriPub
Adv.Init =Form1
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 20:08
Alors pour être précis :

Option Explicit
Private adv As New TriPub

Private Sub Form_Load()
    adv.InitFrm Me 'LE MESSAGE D'ERREUR EST ICI
End Sub

Pour la classe

Option Explicit

Private tmpForm2 As Form

Public Sub InitFrm(ByRef tmpForm As Form)
    tmpForm2 = tmpForm
End Sub

L'erreur est de type : Erreur d'exécution 13 Type incompatible
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 20:08
Et c'est  du VB6
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 20:15
pardon une petite erreur s'est glissé l'erreur n'est pas celle donnée mais

dans la partie de la classe qui me donne :

Public Sub InitFrm(ByRef tmpForm As Form)
    tmpForm2 = tmpForm 'ERREUR ICI
End Sub

Erreur de compilation : utilisation incorrect de la propriété...

Toutes mes excuses
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 20:24
ok c'est bon ça marche..encore désolé et merci pour ta patience....j'ai rajouté un SET (quand j'ai vu que tu me l'avais mis en rouge...dsl...fatigué :p )

merci
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
20 août 2008 à 20:29
A présent que tout marche il me reste un dernier soucis...

je n'ai plus accès dans ma classe au combox et text etc... contenu dans le Form1 de départ....

:/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 août 2008 à 20:50
tu n'as "plus"?
non, tu n'as jamais eu
pour cause, tmpForm est une instance de Form et non de Form1

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
21 août 2008 à 08:38
Oui sans jouer sur les mots je n'ai jamais eu....
Il faudrait donc que tmpForm soit une instance de Form1 alors ?
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
21 août 2008 à 08:54
Mais bon...si je dois instancier form1 dans ma classe....ce n'est pas vraiment utile puisque je veux passer à ma classe n'importe quel formulaire et tout ce qu'il contient...donc si c'est Form2 qui passe....ça jouera plus
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 août 2008 à 08:59
Salut,
En parcourant la collection Controls de l'objet Form, tu devrais pouvoir accéder à ton combobox. (si je ne me trompe pas.)

@+: Ju£i€n
Pensez: Réponse acceptée
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
21 août 2008 à 12:13
Donc je passe en paramètre Form1.controls ???
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 août 2008 à 14:48
Re,
Tout dépends QUAND tu souhaites accéder à ce fameux ComboBox...

Avant de passer un objet en paramètre à une procédure, il faut ce demander ce que tu as réellement besoin de cet objet...

@+: Ju£i€n
Pensez: Réponse acceptée
0
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
21 août 2008 à 15:20
eh bien j'ai besoin d'accèder à toutes les combox listbox etc..... de Form1
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 août 2008 à 15:58
Dans ce cas oui passe uniquement controls...

Ensuite il faut se demander si tu souhaites que cette procédure soit réutilisable avec d'autres Form...

Sinon passe juste les combo et les listbox.
Est ce que tu comprends ou je veux en venir?

@+: Ju£i€n
Pensez: Réponse acceptée
0
Rejoignez-nous