Passer un objet Form en paramètre

cs_dan24 Messages postés 39 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 15 avril 2005 - 14 avril 2005 à 12:52
RM_Rilke Messages postés 1 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 30 juin 2005 - 30 juin 2005 à 11:09
Bonjour,

Je fais comme ceci pour appeler la procédure paramétrée (en mettant directement le nom de la Form en paramètre):

mdlProceduresPubliques.OuvrirFournisseurs frmProduit

Et dans le module mdlProceduresPubliques, je reçois le paramètre ainsi:

Public Sub OuvrirFournisseurs(formActive As Form)
With formActive
'du code
End with
End Sub

Mais frmProduit ne passe pas en paramètre. J'ai aussi essayé comme ça:

Public Sub OuvrirFournisseurs(formActive As Object)
Dim feuille As Form
Set feuille = formActive
With feuille
'du code
End with
End Sub

Ca ne marche pas non plus. Quelqu'un saurait-il comment faire?
Merci d'avance

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 avril 2005 à 13:06
Heu... dans mdlProceduresPubliques.OuvrirFournisseurs frmProduit,
mdlProceduresPubliques c'est le nom d'un module ?



Si c'est le nom d'un module (et non un module de classe), enlève le :
OuvrirFournisseurs frmProduit devrait mieux marcher !



DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_dan24 Messages postés 39 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 15 avril 2005
14 avril 2005 à 14:54
Merci d'avoir répondu aussi vite mais j'ai du mal à comprendre ton conseil.

mdlProceduresPubliques est un module (pas un module de classe), que j'appelle dans le code d'une form frmProduit, et OuvrirFournisseurs une procédure paramétrée de ce module, qui reçoit le nom de la form concernée (ici frmProduit) en paramètre.

Vu que je veux utiliser la procédure OuvrirFournisseurs au niveau de différentes forms, je voudrais passer le nom de la form concernée en paramètre.

Tu me dis d'enlever OuvrirFournisseurs??? Je ne comprend pas tout là??

Merci pour ton aide
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 avril 2005 à 18:40
Non, je te dis d'enlever le nom du module : ca ne te sert à rien, et si ca se trouve, ton erreur vient de là !


En gros, au lieu de :

mdlProceduresPubliques.OuvrirFournisseurs frmProduit




Fait plutôt :


OuvrirFournisseurs frmProduit



DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_dan24 Messages postés 39 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 15 avril 2005
14 avril 2005 à 23:03
Non ça ne change rien.
Pourrais-tu juste me dire quel code tu utiliserais toi?

En tout cas merci pour tout
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 avril 2005 à 07:04
Ben voici un code simple qui marche très bien chez moi :



Créer une feuille nommée Form1

Créer un module.



Dans Form1 :



Private Sub Form_Click()



Call ModifyTitle(Me)



End Sub





Dans le module :



Public Sub ModifyTitle(ByRef oForm As Form)



Let oForm.Caption = "Salut !"



End Sub





A l'éxécution du programme, lorsque tu clique sur la feuille, le
caption de celle-ci est automatiquement modifié, donc la référence à la
feuille est bien passée !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_dan24 Messages postés 39 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 15 avril 2005
15 avril 2005 à 14:53
Bon, j'arrive toujours pas à faire ce que je veux faire mais tant pis.
C'est sympa de ne pas m'avoir lâché en route.
Merci beaucoup pour ton aide.
0
RM_Rilke Messages postés 1 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 30 juin 2005
30 juin 2005 à 11:09
Salut dan24,
je reviens sur ta question et sur le code proposé par Darsidious.
Si tu n'as pas depuis ce temps trouvé la bonne syntaxe :
1°) tu es bien sous VB.Net (et pas VB6), donc un conseil prend des noms d'objets simples. Tes noms de procédures sont vraiment longs.
2°) pas nécessaire d'utiliser Let (Visual Studio l'enlève de force), ni "caption" . Sous VB.Net , c'est plutôt la propriété Text qui a remplacé tout ça.

3°) le code de Darsidious est présenté rapidement, je vais préciser ça plus lentement car moi aussi je débute sous .NET :
1- tu créé un nouveau projet de type Windows form = d'emblée, VS te génère ta form1 (que tu renomme comme tu veux à condition de répercuter ça partout là où il faut),
2 tu créé un module, précision : à coté de ta form1 et pas dedans. En fait, dans l'explorateur de solution tu vas à la 2ème ligne en haut et tu click_droit dessus (c'est le nom de ton projet) pour ouvrir le menu contextuel : tu vas à la 3ème ligne "Ajouter" puis tu choisis "ajouter un module". Automatiquement tu te retrouves dans l'éditeur sur l'endroit de ton futur code pour ce module, là tu écris donc :

Public
Sub ModifyTitle(
ByRef oForm
As Form)


oForm.Text = "Salut"



End
Sub

Mais si tu essayes avec ByVal au lieu de ByRef ça marche aussi bien. Dans le code lié à Form1, tu appelles le sub sans même mettre call devant.
C'est simple et à partir de ce code tu avances pas à pas vers ton pb propre.
A+
0
Rejoignez-nous