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

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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 !!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
38
Affichages
819
Réponses
17
Affichages
230
Retour