Mdi et fonction

cs_zelastwarrior Messages postés 33 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 juin 2005 - 18 nov. 2004 à 15:36
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 18 nov. 2004 à 17:29
Bonjour à tous,
je vais une application MDI en VB. Mon probleme est que j'utilise deux fois le meme code pour remplir des combobox sur différentes feuilles filles pendant le chargement de la feuille (load). Je voudrais stocker cette fonction dans un module.
Ma question est quel parametre dois je passer dans le code et dans la declaration de la fonction pour que je puisse avoir une sorte de pointeur sur une form.
note j'ai deja essayé ca:

programme :
form_load()
modu.charge (me) ' fonction dans le module

module :
public sub charge(a as form)
...
end sub

il m'a renvoyé l'erreur type incompatible

6 réponses

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
18 nov. 2004 à 16:05
dans le code que tu a mis il n'y a pas de probleme

ton probleme doit etre dans la fonction de ton module ou tu dois mal traiter le form

si dans ta sub charge tu met tout ton code en commentaire et tu met juste un msgbox "hello" tu veraa il n'y a pas d'erreur.

le pb viens de ton module le form lui est bien transmis a ta sub
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 nov. 2004 à 16:38
Salut,

Si ta fonction doit remplir juste des combobox, pourquoi ne pas passer les combobox en parametre plutot que de passer les forms entiers
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
cs_zelastwarrior Messages postés 33 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 juin 2005
18 nov. 2004 à 17:12
thierrydelepine : ya bien une erreur "type incompatible" quand je fais ca!! et si je met tout en commentaire pareil.

jrivet : ben en fait c trois combobox qui se remplissent grace a cette fonction (ils se nomme pareil sur les deux formes filles différentes) et c les trois meme en plus (se remplisse grace a un recordset.

voila
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 nov. 2004 à 17:17
Re,

Oui, mais de toute facon ton programme n est qu a un seul endoit en meme temps (si tu es en vb6)

donc tu peux tres bien passer ton (ou tes) combobox a remplir en parametre.

(si tu pouvais mettre un peu plus de code :) )

@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0

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

Posez votre question
cs_zelastwarrior Messages postés 33 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 juin 2005
18 nov. 2004 à 17:28
bon je vais essaye de mettre le pus interessant

mdiparent
Private Sub MDIForm_Load()
Height = Screen.Height * 75 / 100
Width = Screen.Width * 75 / 100
Top = (Screen.Height - Height) / 2
Left = (Screen.Width - Width) / 2
modu.connect
Dim frmadmin As Form
Set frmadmin = New frmmdichildadmin
frmadmin.Show
End Sub

mdichildadmin
Private Sub Form_Load()
'remplir les combo box par la fonction charger

module
Public Sub charge()
'tout ce qui commence par cb = combobox
'cbsalle, cbclasse, cbprob sont les trois combobox presents sur
'la feuille admin
Dim rsprof As New ADODB.Recordset
Dim rsclasse As New ADODB.Recordset
Dim rssalle As New ADODB.Recordset
cbclasse.Clear
cbprof.Clear
cbsalle.Clear
'chargement des classes
rsclasse.Open "select * from CLASSE", modu.connection
Do While Not rsclasse.EOF
cbclasse.AddItem (Trim(rsclasse("NOM_CLASSE")) & " " & Trim(rsclasse("ANNEE_PROMO")))
rsclasse.MoveNext
Loop
'chargement des professeurs
rsprof.Open "select * from PROFESSEUR", modu.connection
Do While Not rsprof.EOF
cbprof.AddItem Trim(rsprof("NOM_PROF"))
rsprof.MoveNext
Loop
'chargement des salles
rssalle.Open "select NUM_SALLE from salle", modu.connection
Do While Not rssalle.EOF
cbsalle.AddItem rssalle!NUM_SALLE
rssalle.MoveNext
Loop
'fin de chargement
rssalle.Close
Set rssalle = Nothing
rsclasse.Close
Set rsclasse = Nothing
rsprof.Close
Set rsprof = Nothing
End Sub
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
18 nov. 2004 à 17:29
moi j'ai fait le test suivant

dans un form

je met

Private Sub Form_Load()
charge Me ' fonction dans le module
End Sub

dans un module je met

Public Sub charge(a As Form)
MsgBox a.Caption
End Sub

et ça marche

par contre toi tu as mis
charge (Me) au lieu de charge Me

il faut savoir que si tu met ton parametre entre paranthese c'est que tu veux un retour de ta fonction donc il faut mettre

n = charge (Me)
si tu ne veux pas de = il faut mettre : charge Me
0
Rejoignez-nous