Unload userForm

Résolu
zigo34
Messages postés
6
Date d'inscription
jeudi 21 septembre 2006
Statut
Membre
Dernière intervention
27 décembre 2007
- 26 déc. 2007 à 15:12
jabveneau
Messages postés
3
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
3 mars 2009
- 25 févr. 2009 à 19:15
bonjour,
j'ai un formulaire tout simple sous EXCEL2000 (j'ai fini par enlever tout le code...), donc avec seulement un bouton OK pour le fermer !!
j'affiche mon formulaire avec Form.Show dans une macro VBA... jusque là tout va bien...
dans le code du formulaire, sur l'évènement Click du bouton OK je veux le fermer avec Unload Me.
il se ferme... mais toutes les variables sont réinitialisées ????? ... sans aucun message d'erreur !
A noter que j'ai d'autres formulaires dans ce classeur qui fonctionnent correctement selon la même méthode !!! 

si quelqu'1 a une idée... merci d'avance !

Zigo

7 réponses

zigo34
Messages postés
6
Date d'inscription
jeudi 21 septembre 2006
Statut
Membre
Dernière intervention
27 décembre 2007

27 déc. 2007 à 18:06
re,
ben voilà... ça marche... sans trop savoir pourquoi...
la seule chose que j'ai rajoutée c'est "Option Explicit" dans tous mes modules... c'est bon à savoir.
merci à Exploreur et bisfish pour leur aide...
@+

Zigo
3
cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
26 déc. 2007 à 17:16
Salut,

Normal que tes variables se remettent à zéro quand tu décharge ta feuille...Pour les autres variables, je pense que si elles ne remettent pas à zéro, c'est qu'il est fort possible qu'elles soient déclarées en Public..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
zigo34
Messages postés
6
Date d'inscription
jeudi 21 septembre 2006
Statut
Membre
Dernière intervention
27 décembre 2007

26 déc. 2007 à 21:24
merci pour ta réponse Exploreur... mais j'ai mal du me faire comprendre...
je ne décharge pas ma feuille... seulement UNLOAD du formulaire...
et ce sont toutes les variables publiques qui sont réinitialisées...
merci à toi.

Zigo
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
27 déc. 2007 à 15:40
Salut,

Selon l'aide excel (de la version anglaise traduit par Google) :

Unload Statement
      
Supprime un objet
de la mémoire.

Syntaxe

Unload objet

L'espace requis objet
représente un objet qui permet d'évaluer l'expression d'un objet dans la liste de l'application.

Remarques
Lorsqu'un objet est déchargé, il est
supprimé de la mémoire et toute la mémoire associée à l'objet est récupéré.
Jusqu'à ce qu'elle soit placée dans la mémoire à nouveau en utilisant l'état de
charge, un utilisateur ne peut interagir avec un objet, et l'objet ne peut être
manipulée par programmation.

Regarde la remarque :  Lorsqu'un objet est déchargé, il est
supprimé de la mémoire et toute la mémoire associée à l'objet est récupéré.
Ce que je comprend et par experience les variables associées seront reinitialisées. Donc soit tes variables ne sont pas declarées au bon endroit et sont considérées comme associées. Par exemple dans VBA une variable meme publique declarées dans le code d'un UserForm est une variable associée donc reinitialisé. Soit tu n'utilise pas la bonne methode. Si tu as besoin de reafficher un UserForm dans sont etat precedent  tu peux utiliser  : Userform.Hide qui ne reinitialise rien donc au prochain  Userform.Show ton userform sera reafficher tel que precedemment.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zigo34
Messages postés
6
Date d'inscription
jeudi 21 septembre 2006
Statut
Membre
Dernière intervention
27 décembre 2007

27 déc. 2007 à 16:00
merci bigfish de me répondre,
cependant, pour les tests, j'ai supprimé toutes les variables de mon UserForm... il reste seulement l'instruction Unload Me dans la sub "Click du bouton OK", rien de plus, or toutes mes variables sont réinitialisées... cela veut dire que l'interpréteur arrete l'exécution et détecte une anomalie... mais laquelle ? puisque je n'ai aucun message d'erreur !
avec la méthode Userform.Hide ça marche... mais comme tu le dis l'état des variables affichées ne change pas... et je dois les ré-initialiser dans ma procédure d'appel du formulaire juste avant le UserForm.Show.
c'est une façon de fonctionner qui est acceptable... sauf que j'aimerais bien comprendre pourquoi ça marche pas ... avec unload, conseillé sur de nombreux sites que j'ai consultés avant de poser ma question ici...
je pourrai pencher pour un Bug d'EXCEL... mais ceci étant dit... je sais par expérience qu'il est plus probable c'est moi qui utilise mal la méthode...
merci encore... je finirai bien par trouver et je donnerai la réponse sur ce forum ce jour-là...
A+

Zigo
0
cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
27 déc. 2007 à 16:22
Salut,

Ben, déclare tes variables dans un module (*.bas)...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jabveneau
Messages postés
3
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
3 mars 2009

25 févr. 2009 à 19:15
Bonjour Zigo 34

ayant le même problème que toi , je serais assez intéressé pour reprendre cette ancienne discussion , je me suis permis de t'envoyer un MP mais je ne sais pas trop comment ça fonctionne et si cela t'est parvenu ...
A plus tard RV
0