Controls Userform

claudio54

XLDnaute Junior
Bonjour à tous
J'ai plusieurs Usf avec divers contrôles.
Dans un module, j'effectue plusieurs opérations déclenchées par un Usf et je souhaite afficher les résultats dans celui-ci (l'usf actif).
Le même module peut être lancé à partir de plusieurs usf différents en sachant que le résultat ira toujours dans label1 et textbox25 de l'usf qui a lancé le module.

code du module :

' Acquisition
toto=(usf_actif).textbox1
tata=(usf_actif).ListView1.ListItems.Count

' Traitement...

' Restitution
(usf_actif).label1=resultat1
(usf_actif).textbox25=resultat2
...
bien sur cela ne fonctionne pas comme ça, mais y a-il moyen de le faire ? Par quoi remplacer (usf_actif) ?

j'ai essayé avec le nom de l'usf dans une variable
Merci
 

Paf

XLDnaute Barbatruc
Bonjour claudio54, ChTi160

sûr qu'avec des indications aussi précises on ne fournira pas d'aide précieuse !!

dans le module , on doit avoir au moins une sub ?

Une solution pourrait consister à passer à cette ( ces) sub, en paramètre l' userform appelant :

VB:
Sub MaSUB(USF as Object)
 USF.label1=resultat1
 USF.textbox25=resultat2
end sub

et depuis l'userform appeler:

VB:
 MaSUB Me


A+
 

claudio54

XLDnaute Junior
Bonjour
Effectivement, je ne devais pas être assez clair.
j'ai fait un tout petit fichier pour illustrer le problème (rien à voir avec mon fichier qui me tracasse, mais le principe est là).

merci
 

Pièces jointes

  • Exemple1.xlsm
    25.6 KB · Affichages: 8

Dranreb

XLDnaute Barbatruc
Bonjour
Personnellement je ferais comme ça :
Module1 :
VB:
Sub Calcul(ByVal TBx1 As MSForms.TextBox, ByVal TBx2 As MSForms.TextBox, ByVal TBx3 As MSForms.TextBox)
   Dim N1 As Double, N2 As Double, Result As Double
   If TBx1.Text = "" Or TBx2.Text = "" Then
       MsgBox "Manque donnée !"
       Exit Sub: End If
   N1 = CDbl(TBx1.Text)
   N2 = CDbl(TBx2.Text)
   Result = N1 * N2
   TBx3.Text = Result
   End Sub
Userform1,2,3 :
VB:
Sub CommandButton1_Click()
   Calcul Me.TextBox1, Me.TextBox2, Me.TextBox3
   End Sub