VBA : Utiliser un résultat d'une autre userform

  • Initiateur de la discussion Michael
  • Date de début
M

Michael

Guest
Bonjour,

Comment faire pour se servir de la valeur choisie ds une combobox d'une userform1 quand nous sommes sur une autre userform (userform2 par ex) ?

Merci


Michael
 
G

GClaire

Guest
Michael, le forum

Il me semble qu'il ne faut pas ferme le premier UserForm et dans le deuxieme quand tu appelle le ComboBox tu met le nomme de l'userForm

Ex :

Si tu ne veux pas que le premier s'affiche tu met au lancement du deuxieme UserForm

UserForm2.hide
et pour récuperer la valeur du ComboBox1

UserForm1.Le nom du control= UserForm2.ComboBox1

J'espère ne pas dire de bétises, si c'est la cas on me reprendra j'espère,hihihi

Voila, salut, G'Claire
 
@

@+Thierry

Guest
Bonjour Michael, le Forum

Ta question est trop succinte pour y répondre clairement. En fait tout dépend de la structure de tes procédure...

Si par exemple tu utilises la méthode "Unload Me" depuis le UserForm1 quand tu lances la commande UserForm2.Show... Alors les données entrées (ou sélectionnées) dans les Controls ActiveX du UserForm1 ne sont plus disponible puisque "Déchargées" (Unload) de la mémoire...

Si, par contre tu utilise la méthode "Me.hide" depuis le UserForm1 quand tu lances la commande UserForm2.Show... Alors les donnée sont toujours en mémoire et disponibles... Dans ce cas il suffit, depuis le UserForm2, de rédiger des Syntax dans ce style pour récupérer ces données :
TextBox1 = UserForm1.ComboBox1.Value

Il y a aussi la seconde possibilité de "Unloader" le UserForm1 mais en ayant pris soin au préalable de transférer dans des variables publiques le contenue des Controls nécéessaire avant leur déchargement.

Pour faire une Variable Publique il faut rédiger en dehors de toute Sub en Top (tout en haut) d'un Module Standard, (NB : Pas un Private Module de UserForm) une syntax de ce style :
Public MaValeur As String (Si la valeur est une chaine de caractères par exemple)

On pourra alors au moment de quitter le UserForm1 écrire :
If ComboBox1.Value <> "" Then
MaValeur = ComboBox1.Value
Et Ensuite faire Unload USerForm1
Dans le UserForm2 il suffuira de faire réference à MaValeur.......

Cette seconde méthode (Public Variable) est plus contraignante à rédiger que de garder le UserForm1 en mémoire, mais par contre, elle ménagera la mémoire de ton PC car le Hide, garde TOUT le UserForm en mémoire, dommage si c'est juste pour un Mot à conserver !!!

Voilà pour une première approche
Bon Premier Mai à Tous et Toutes
@+Thierry
 
@

@+Thierry

Guest
Ah bonjour G'claire, LN

On s'est croisé sur ce coup là, non G'Claire tu ne dis pas de bêtise, mais le Hide doit être utilisé à bon escient, en applicattion des réserves que j'ai indiquées.

Il m'est arrivé de voir des applis sur ce Forum avec 10 userforms chargés à bloc de Controls dont aucun étaient "Unloadé" et pour lesquelles l'intervenant demandait "Je ne comprends pas pourquoi mon appli plante systématiquement"

Enfin c'est comme çà qu'on apprend !!!
 

Discussions similaires

Réponses
9
Affichages
613