Bonjour Blafi, le Forum
Il est tout d'abord important de connaître ce qu'est le Mode Modal (Par Défaut si non spécifié).
En Mode Modal qu'il s'agisse d'une Simple MSgBox ou d'un UserForm, l'Objet prend la main et stoppe les procédures suivantes tant que l'utilisateur n'enclenche pas d'action qui refermera l'Objet.
Par conséquent, en pratique, cette syntax lancée depuis le UserForm1 :
Private Sub CommandButton1_Click()
UserForm2.Show
UserForm1.Hide
End Sub
Laissera le UserForm1 visible tant qu'on ne fermera pas le UserForm2.
Si on applique une inversion :
Private Sub CommandButton1_Click()
UserForm1.Hide
UserForm2.Show
End Sub
Tout rentre dans l'ordre...
Ou bien on travaille en mode 'Non-Modal' et les tous les UserForms seront lancés avec cette syntax :
UserFormX.Show False
Pour ce qui est des variables, pour jongler de l'un à l'autre des UserForms (ou autres Modules) avec leurs valeurs respectives, il faut qu'elles soient déclarées Public dans un Module Publique lui-même (un Module 'Standard' (Module1 par Exemple)).
Un dernier point si tu utilises la Méthode Hide du UserForm1, tu n'as pas besoin de Variables Publiques, puisque justement en appliquant 'Hide' le UserForm est toujours chargé en mémoire ainsi que les valeurs respectives des contrôles qu'il contient. (Sinon préférer la méthode 'Unload UserFormX' qui libérera de la mémoire)
Bonne Soirée
[ol]@+Thierry[/ol]