Réinitialisation userform

  • Initiateur de la discussion eric
  • Date de début
E

eric

Guest
Bonjour à tous,

Je vais essayer d'être clair :

J'ai 2 userforms :
le premier avec un combobox : liste de noms
le second avec plusieurs textbox : prénoms, adresse, CP, ville ...

La procédure est la suivante : lorsque je sélectionne un nom dans mon premier userform, une recherche s'effectue dans une feuille excel, puis, mon second userform s'affiche avec tous les textbox automatiquement complétés.

Mon problème est le suivant : lorsque je reviens sur mon premier userform pour effectuer une nouvelle recherche, mon second userform s'affiche, mais avec les informations de ma premiere recherche. Il n'y a pas de réactualisation des données.

Je pense que celà provient du fait que j'utilise les commandes hide et show pour mes userforms, mais je ne connais pas d'autres fonctions.

A titre d'info, l'actualisation de mes données dans le userform2 est mis dans une procédure "userform_initialize".

Merci de votre aide

Bonne journée
 
M

Max

Guest
Salut Eric,

lorsque tu utilises la méthode show, la procédure Initialize se déclanche.
Lorsque tu utilises hide puis unhide, ta boîte de dialogue ne se réinitialise pas. Tu ne fais que masquer ton userform. Par contre avec unload puis show, tu ferme puis recharge ta boîte de dialogue.

Pour ton cas il faudrait regarder de plus près.
Je sais que je ne résouds pas ton problème, mais c'est tjs ça de pris...
 
L

Laeti

Guest
Bonjour !

j ai justement un pb avec initialize ...
j ai un formlaire qui a un nom et deux choses soit il ne trouve pas l objet si je lance userform_initialize soit si je mets nomformulaire_initialize il l affiche sans l initialiser ...
tu sais comment resoudre ce probleme ?

Merci beaucoup
Laeti

Et t as aussi la methode Load qui te permet de reloader ton formulaire
Load Formulaire
 
@

@+Thierry

Guest
Bonjour Laeti, Max, Eric et le Forum

Comme l'a bien résumé Max, il faut faire une grande différence en Hide et Unload.

UserFormX.Hide ne fait que masquer le UserForm, et ensuite une méthode UserFormX.Show ne fera que le faire réaparaître à nouveau dans l'état où le User l'a laissé... Car le UserForm reste résidant en mémoire. Dans 90% des applis standards, il n'est pas utile de garder les UserForm en Mémoire et donc la méthode Unload est préférable (libération d'espace de stockage en mémoire)

Par conséquent le problème d'Eric devrait être résolu par une sortie du UserForm2 comme ceci :
Unload UserForm2
ou encore Unload Me (si cette intruction est placé dans le private module du UserForm2 en question)

Il y a aussi un autre moyen qui consiste à utiliser la méthode Activate conjointement à la méthode Initialize et si vous être interressés je vous invite à lire ce fil =>Lien supprimé mais c'est une autre approche.

En ce qui concerne le poste de Laeti, je ne suis pas sûr de bien interpréter (?) parles-tu bien d'une procédure classique comme ceci :

éléments nécessaires
Un CommandButton sur Feuil1
Un UserForm1
Une TextBox1 dans UserForm1

Dans le Private Module de la Feuil1
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Dans le Private Module du UserForm1
Private Sub UserForm_Initialize()
TextBox1 = Range("A1").Value
End Sub

Car en lisant j'ai un peu l'impression que tu essaies de lancer l'initialize du UserForm depuis un Module Standard ou un Private Module de Feuille... Ce qui ne marche pas...

Pour la dernière partie, utiliser la méthode Load est utile dans le cas de UserForms volumineux que l'on voudrait charger en mémoire à l'avance(avec WorkBook_Open par exemple) afin que lorsque le User click sur un CommandButton déclenchant UserFormX.Show, celui étant déjà résidant en mémoire, ce dernier apparaisse au quart de Nano-Seconde... Mais disons que dans bien des apllis ce n'est pas nécessaire.

Enfin voilà en espérant vous avoir un peu éclairé.

Bon Aprèm
@+Thierry
 
@

@+Thierry

Guest
PS (bis) en me relisant...


Quand je dis pour Load est utile pour UserForm Volumineux, ce n'est pas exhaustif. On peut aussi avoir besoin de faire un Load de UserForm pour d'autres motifs comme par exemple une besoin de récupérer des infos de des contrôles de ce UserForm sans que celui-ci soit affiché... etc etc...

Bien à vous
Bonne Fin d'Aprèm
@+Thierry
 
L

Laeti

Guest
Re,
j ai pas tout compris a ta réponse ...

en fait je crois que je fais une surement une connerie mais je t explique j ai un
FormulaireX_initialize () dans le code mon UserForm et le prog ne passe pas par cette méthode, je ne comprend pas pourquoi en fait ...
maintenant je me plante surement mais il est pas sensé passer par la ?

Merci beaucoup Laeti
 
@

@+Thierry

Guest
Re Laeti,

Euh oui ton problème semble proveinr de quelque chose qui foire dont dans la macro d'initialize...

En vrac, des cause possibles...

Dèjà est-ce bien une Private sub ?

Ensuite FormulaireX_initialize ... existe-t'il bien un UserForm du nom de FormulaireX (et pas FormulaireY ou FaurmulèreX lol) !!

Ensuite dans les codes qui sont écrits dans cette initialise que fais-tu ? par exemple :
TextBox1 = Range("A1").Value

Il faut impérativement que le Control ActiveX "TextBox1" existe aussi... (Et pas Taixtboite1)...

Enfin déjà tout çà pour te dire que les plantage à l'ouverture/initialise d'un UserForm sont dans 99% des noms erronées....

Sinon comme te l'on fait remarquer justement Vériland et Fahd Lien supprimé tu devrais carrément poster au moins le code utilisé dans ce UserForm... Car c'est pas évident de suivre où se peut trouver ton erreur...

Et aussi il faudrait savoir ce que tu attends de cette initialisation, car tu ne donnes aucun détail et c'est le plus difficile de savoir çà à ta place !

Enfin fais déjà le tour des noms de tous les Controls utilisés dans ce UserForm... Et évidemment de la Syntax...

Bon Courage
@+Thierry
 
V

Vériland

Guest
Ouarf...ben l'est pas content(e) Laeti...par rapport à Lien supprimé...lol

C'est sûr...lorsqu'on galère depuis un moment on est embêté...mais j'espère que tu t'en sort avec cette réponse de Private Sub UserForm_Initialize()...

Tchao Thierry en passant...;-) et tout les autres de ce fil aussi d'ailleurs...
 
@

@+Thierry

Guest
Rectification :

FAUX :
Ensuite FormulaireX_initialize ... existe-t'il bien un UserForm du nom de FormulaireX (et pas FormulaireY ou FaurmulèreX lol) !!

VRAI :
Ensuite FormulaireX_initialize ...
===> UserForm_Initialize

J'vé faire 100 lignes !


Merci à Vériland !! (lol)

Bye Bye
@+Thierry

UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​
UserForm_Initialize​

...(Just for the fun !!!)
 

Discussions similaires