OVH Cloud OVH Cloud

connaitre le UserForm appelant

3 réponses
Avatar
Jean
Bonjour à tous,

J'ai deux userForm (userForm1 et userForm2) qui comporte les mêmes champs de
saisie, tous deux appellent une procédure d'impression dans un
module(module1) .
J'appelle mon module avec une ligne du type : print_var(nb_ligne) et je vais
chercher des valeurs saisies dans l'un de mes UserForm.

Dans le module print_var j'ai quelque chose comme
msgbox userForm1.z_adresse.value
cela fonctionne lorsque c'est userForm1 qui appelle mais bien sur ça ne
marche pas lorsque c'est userForm1 qui appelle.

J'ai essayé de transmettre le nom du UserForm pour avoir quelque chaose de
ce type

sub print_var(nb_ligne as Integer, nom_user as name)
msgbox nom_user.z_adresse.value
end sub

et pour l'appeler call print_var(nbl, userForm1.NAME)
mais là non plus ça ne marche pas.

Pouvez-vous m'aider ?

Merci d'avance

Jean

3 réponses

Avatar
michdenis
Bonjour Jean,

Ne n'ai pas tout compris de ta demande, mais voici un petit exemple :

Dans ton formulaire ceci:

Comment passer à une procédure dans un module standard, le contenu
d'un textbox qu'importe de quel formulaire, il origine... la ligne de commande
dans le formulaire est la même.

'-------------------
Private Sub CommandButton1_Click()

print_var Me, Me.TextBox1

End Sub
'-------------------

Dans un module standard :

'----------------------
Sub print_var(frm As MSForms.UserForm, TBox As MSForms.TextBox)

MsgBox frm.Controls(TBox.Name).Value

End Sub
'----------------------


Salutations!



"Jean" a écrit dans le message de news: 43fe0609$0$21257$
Bonjour à tous,

J'ai deux userForm (userForm1 et userForm2) qui comporte les mêmes champs de
saisie, tous deux appellent une procédure d'impression dans un
module(module1) .
J'appelle mon module avec une ligne du type : print_var(nb_ligne) et je vais
chercher des valeurs saisies dans l'un de mes UserForm.

Dans le module print_var j'ai quelque chose comme
msgbox userForm1.z_adresse.value
cela fonctionne lorsque c'est userForm1 qui appelle mais bien sur ça ne
marche pas lorsque c'est userForm1 qui appelle.

J'ai essayé de transmettre le nom du UserForm pour avoir quelque chaose de
ce type

sub print_var(nb_ligne as Integer, nom_user as name)
msgbox nom_user.z_adresse.value
end sub

et pour l'appeler call print_var(nbl, userForm1.NAME)
mais là non plus ça ne marche pas.

Pouvez-vous m'aider ?

Merci d'avance

Jean
Avatar
Hervé
Bonsoir Jean,
Le plus simple est de passer le nom de la Form, exemple (mets le code
ci-dessous dans le module de ta Form et clique sur celle-ci) :

Private Sub UserForm_Click()
Dim Ligne As Integer
Ligne = 5
print_var Ligne, Me.Name'<<passe le nom (String)
End Sub

Sub print_var(nb_ligne As Integer, nom_user As String)
MsgBox nom_user
End Sub

Hervé.

"Jean" a écrit dans le message de news:
43fe0609$0$21257$
Bonjour à tous,

J'ai deux userForm (userForm1 et userForm2) qui comporte les mêmes champs
de saisie, tous deux appellent une procédure d'impression dans un
module(module1) .
J'appelle mon module avec une ligne du type : print_var(nb_ligne) et je
vais chercher des valeurs saisies dans l'un de mes UserForm.

Dans le module print_var j'ai quelque chose comme
msgbox userForm1.z_adresse.value
cela fonctionne lorsque c'est userForm1 qui appelle mais bien sur ça ne
marche pas lorsque c'est userForm1 qui appelle.

J'ai essayé de transmettre le nom du UserForm pour avoir quelque chaose de
ce type

sub print_var(nb_ligne as Integer, nom_user as name)
msgbox nom_user.z_adresse.value
end sub

et pour l'appeler call print_var(nbl, userForm1.NAME)
mais là non plus ça ne marche pas.

Pouvez-vous m'aider ?

Merci d'avance

Jean



Avatar
Jean
Merci,

Comme j'ai beaucoup de valeurs saisies dans mon Userform. Je l'utilise comme
ceci

dans mon Userform

Private Sub CommandButton1_Click()
Call print_var(Me)
End Sub

et dans mon module
Public Sub print_var(frm As MSForms.UserForm)
With frm
MsgBox .TextBox1.Value
MsgBox .TextBox2.Value
MsgBox .TextBox3.Value
End With
End Sub

merci à tous

Jean

"michdenis" a écrit dans le message de news:

Bonjour Jean,

Ne n'ai pas tout compris de ta demande, mais voici un petit exemple :

Dans ton formulaire ceci:

Comment passer à une procédure dans un module standard, le contenu
d'un textbox qu'importe de quel formulaire, il origine... la ligne de
commande
dans le formulaire est la même.

'-------------------
Private Sub CommandButton1_Click()

print_var Me, Me.TextBox1

End Sub
'-------------------

Dans un module standard :

'----------------------
Sub print_var(frm As MSForms.UserForm, TBox As MSForms.TextBox)

MsgBox frm.Controls(TBox.Name).Value

End Sub
'----------------------


Salutations!



"Jean" a écrit dans le message de news:
43fe0609$0$21257$
Bonjour à tous,

J'ai deux userForm (userForm1 et userForm2) qui comporte les mêmes champs
de
saisie, tous deux appellent une procédure d'impression dans un
module(module1) .
J'appelle mon module avec une ligne du type : print_var(nb_ligne) et je
vais
chercher des valeurs saisies dans l'un de mes UserForm.

Dans le module print_var j'ai quelque chose comme
msgbox userForm1.z_adresse.value
cela fonctionne lorsque c'est userForm1 qui appelle mais bien sur ça ne
marche pas lorsque c'est userForm1 qui appelle.

J'ai essayé de transmettre le nom du UserForm pour avoir quelque chaose de
ce type

sub print_var(nb_ligne as Integer, nom_user as name)
msgbox nom_user.z_adresse.value
end sub

et pour l'appeler call print_var(nbl, userForm1.NAME)
mais là non plus ça ne marche pas.

Pouvez-vous m'aider ?

Merci d'avance

Jean