passer variable d'un userform à un userform en argument Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 3 juillet 2015, 13:28

Bonjour,

Dans un userform j'ai une série d'invite de saisie, j'ai besoin de transférer à 1 autres userform ces informations déjà saisie.

Est-ce possible de passer ces données dans un tableau ou par une série de variable ?

Il y a la solution de déclarer un tableau public ou l'ensemble des variables public mais cela alourdi le code.

Merci par avance
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'416
Appréciations reçues : 136
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 3 juillet 2015, 23:23

Bonjour,
gloutoni a écrit :Dans un userform j'ai une série d'invite de saisie, j'ai besoin de transférer à 1 autres userform ces informations déjà saisie.Est-ce possible de passer ces données dans un tableau ou par une série de variable ?
Oui tout à fait
gloutoni a écrit :Il y a la solution de déclarer un tableau public ou l'ensemble des variables public mais cela alourdi le code
Déclarer un tableau public, alourdi le code :shock:
Ben alors dis nous comment faire :lol: :?
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'710
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 3 juillet 2015, 23:47

Bonjour,

Dans UserForm2 :
MsgBox UserForm1.TextBox1
Peut-être plus lisible mais question allègement....

eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 4 juillet 2015, 13:42

Je n'ai pas été clair,

Je saisie dans le userform1 : disons textbox1 et textbox2
depuis userform1 j'appelle userform2 et je souhaiterais passer en argument textbox1 et textbox2.

Comment puis-je faire ou comment puis-l'écrire ?
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'416
Appréciations reçues : 136
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 4 juillet 2015, 14:18

Bonjour,
gloutoni a écrit :Je n'ai pas été clair,
Je saisie dans le userform1 : disons textbox1 et textbox2
depuis userform1 j'appelle userform2 et je souhaiterais passer en argument textbox1 et textbox2.
Comment puis-je faire ou comment puis-l'écrire ?
Je pense qu'il faudrait que tu nous expliques à quoi te sert le passage de ses arguments :?:

A+
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'710
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 4 juillet 2015, 15:04

Tu disais : j'ai besoin de transférer à 1 autres userform ces informations déjà saisie.
Ce que fait ma proposition c'est récupérer leur valeur.
Pour les passer en argument il suffit de :
sub machin (ch1 as string, ch2 as string)
et
machin toto, tata 'pour l'appel

Et que désires-tu passer exactement ?
Si ce n'est pas sa valeur c'est le nom de l'objet ? Fait le avec une chaine
Ou bien passe une variable objet (non testé)

eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 4 juillet 2015, 19:02

Dans le userform1, 2 textbox ou sont saisie des informations
sous certaine condition j'ouvre un userform2 qui reprend les information déjà saisie (d'où l'utilité de les passer en argument)
que je confronte au informations déjà contenu dans mon document excel.

userform1 :
Private Sub valider_Click()
    UserForm2(telephone).Show
end sub
userform2 :
Private Function UserForm_Initialize(ByVal telephone As String)
    valider.Enabled = False
    MsgBox (telephone)
End Function
mais cela me renvoi une erreur
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'710
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 4 juillet 2015, 19:49

Ben oui, il vaut mieux ne pas toucher aux paramètres par défaut mis par vba sur les proc événementielles.
Et pourquoi tu ne voulais pas du MsgBox UserForm1.TextBox1 ???
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 4 juillet 2015, 20:27

Parce que ce que je souhaite c'est passer des variables au userform2 pour que celui-ci les traites et les utilise

Au pire je vais déclarer un tableau public et y stocker mes variables mais je trouvais dommage d'utiliser autant d'espace pour des variables qui dans mon cas ne servent que très rarement et temporellement faiblement
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'690
Appréciations reçues : 5
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 4 juillet 2015, 21:05

Bonsoir

Une idée en passant

Si tu ne décharges pas de la mémoire (Unload Me) ton Userform1 mais que tu le masques (Me.Hide) tu auras accès aux contrôles
donc facile de faire
Private Sub UserForm_Initialize()
  Me.TextBox1 = UserForm1.TextBox1
  Me.TextBox2 = UserForm1.TextBox2
End Sub
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message