UserForm

G

Gérard

Guest
Bonsoir,

J'ai un UserForm (Menu) dans lequel j'appelle un autre UserForm (ChoixProduit) en cliquant sur un bouton (GestionProduit). Pourquoi le UserForm (Menu) reste affiché à l'écran aprés le 'Unload Menu'

Voici le code ci dessous dans le UserForm (Menu).

Option Explicit

Private Sub GestionProduit_Click()
Unload Menu
ChoixProduit.Show
End Sub

Merci de votre aide.
 
@

@+Thierry

Guest
Bonsoir Gérard

A mon humble avis tu as une erreur dans tes noms d'objets UserForm ou du Bouton, ou encore ta procédure ne se situes pas dans le bon module...

Exemple : si je prends un classeur vierge et que je crée deux UserForms ("UserForm1" & "UserForm2") que je mets un bouton "CommandButton1" sur le "UserForm1" et que dans la commande de ce bouton dans le Private Module du UserForm1 je mets ce code :

Option Explicit

Private Sub CommandButton1_Click()
Unload Me
UserForm2.Show
End Sub

Tout baigne !!!

Donc vérifie tout çà...
Bon courage
@+Thierry
 
G

Gérard

Guest
J'ai ce problème uniquement dans ce classeur. J'ai essayé avec 2 UserForms très simples (un UserForm1 avec un bouton qui appelle le second UserForm2) et le UserForm1 reste en arrière plan du UserForm2.

Dans un autre classeur vierge ca marche très bien.

Où est le problème ???

Merci d'avance pour votre aide.
 
M

Michel

Guest
Bonjour le forum,
Il faut que ton premier userform soit en non modal, je m'explique :

Private Sub GestionProduit_Click()
Menu.Show 0
End Sub

Et après pour appeller le deuxième userform avec un bouton sur le premier
choixproduit.show

Ce qui donne :

Private Sub GestionProduit_Click()
Menu.Show 0
Choixproduit.Show (0 si tu veux travailler sur ta feuille en même temps)
End Sub

@ plus
Michel
 
@

@+Thierry

Guest
Bonsoir Michel, Gérard, le Forum

Euh non je ne suis pas d'accord Michel, il n'est pas nécessaire que le UserForm1 soit en mode Non Modal pour qu'il soit déchargé avant l'ouverture d'une second UserForm2...

Je te conseille de lire ce fil Michel Lien supprimé

A mon avis Gérard a un autre problème dans son classeur, ou bien il n'a pas écrit la procédure du bouton "GestionProduit_Click" comme elle est présentée dans son post, car si il l'a écrite à l'envers comme ceci :

Private Sub GestionProduit_Click()
ChoixProduit.Show
Unload Menu
End Sub

Là oui il faut que le UserForm "ChoixProduit.Show" soit en mode non Modal, mais si ce n'est pas nécessaire, alors écrire le Unload avant le Show...

Bonne Soirée
@+Thierry
 
@

@+Thierry

Guest
Re: UserForm Modal / Non Modal / Unload / Hide

Re bonsoir ce Fil, Salut Hervé

Je ne t'avais pas lu lors de mon précédent message

Hide et Unload sont très différent et n'ont strictement pas le même usage, je te conseille d'utiliser Hide que pour conserver en mémoire des données utiles pour la suite car sinon ton appli risque de planter souvent...

Pour bien comprendre je te conseille de lire ce Fil, Hervé => Lien supprimé

Bonne Soirée
@+Thierry
 
G

Gérard

Guest
Bonsoir,

J'ai bien lu tous ces conseils mais j'ai toujours des problèmes.

UserForm1 (recherche d'un produit)
Unload Userform1
Load UserForm2
Userform2.show

Jusque là tout marche bien.

UserForm2 (affichage du produit sélectionné pour modification)
Mise à jour du produit sélectionné dans le UserForm1
Unload UserForm2
Load UserForm1
UserForm1.show

Jusque là tout marche encore bien.

Lorsque je fais à nouveau 'Load UserForm2' dans le UserForm1, le UserForm_Initialize() ne se fait pas et j'arrive sur un formulaire UserForm2 vierge.

Merci d'avance pour votre aide.
 
@

@+Thierry

Guest
Re Gérard,

You are Welcome Hervé, heureux de t'avoir éclairé !

Pour Gérard, à mon avis ScreenUpdating n'a pas d'effet sur les UserForm, mais que sur l'Application Excel elle-même (Changement dans les Cellules, les Onglets de feuilles, etc)

En fait Application.ScreenUpdating = False est surtout utile quand on a des macros avec des "Select" et " Selection" de partout et que l'on veut éviter un feu d'artifice, çà permet aussi d'accélérer une procédure lorsque l'on créé ou supprime des feuilles, ou pour d'autres évènements qui n'ont pas besoin d'avoir à être affiché en temps réél...

Mais pour les UserForms je ne vois pas d'inter-action possible... Au contraire sans mettre "Application.ScreenUpdating" à False, il faut parfois user de "DoEvents" pour que certaines actions s'affichent sur le UserForm...

Bon Travail
@+Thierry
 
@

@+Thierry

Guest
Re Gérard, Hervé

Ah je n'avais pas vu ton last message...

Tu devrais poster l'Initialize du UserForm2...

Car ce que tu appelles vierge, c'est quoi au juste ? Si tu dois conserver des informations entre les sessions des UserForms alors là on en revient à mes explications pour Hervé au sujet de la méthode "Hide" au lieu de "Unload"... Mais je ne suis pas sûr de ce que tu veux... Car au début on parlait de deux UserForms chargé en même temps...

(?)

Bonne soirée
@+Thierry
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 157
dernier inscrit
youma