[VBA] - UserForm fermé sans procedure de fermeture

Bonjour,

En m'inspirant de ce qu'avait proposé Theze sur une des discussions que j'avais ouverte, via un UserForm, j'exécute une macro qui va avoir pour effet de modifier le code VBA, pour ajouter des éléments à une liste (ListBox + ComboBox).

Tout s'exécute bien, mais en fin de macro, tous les UserForms sont fermés alors que je souhaite simplement que les Listbox et Combobox soient mises à jour.

Savez-vous d'où cela peut provenir ?

Je joins un document si vous voulez voir à l'exécution.

(Pour faire apparaître l'UserForm, changer de feuilles, pour le moment il s'ouvre à l'ouverture de la feuille et pas du projet).

Merci de votre attention,

Bonne journée !

Bonsoir,

et pourquoi ne pas sauvegarder la liste sur une feuille masquée ?

Peut-être parce que cet exemple n'est pas représentatif du projet global...

Mais c'est vraiment "se casser la tête", non ?

@ bientôt

LouReeD

Bonsoir,

Effectivement, il y a cette option, probablement plus simple, mais j'aimerais ne pas utiliser de feuilles masquées et essayer via cette solution.

En plus ça fonctionne ! C'est juste ce phénomène de fermeture de l'UserForm qui m'embête.

Et j'ai l'impression que la macro VBA est juste arrêtée (ce qui est logique vue que je change le code) mais peut-on la relancer là où elle en était ? Par exemple, rouvrir les UserForm qui ont été fermé ?

Bonne soirée !

Le truc est là, c'est que le Userform n'est pas fermé !

Mettez UserForm1.Show à la fin de la procédure "jolie liste" (je crois) et il y a un message d'erreur disant que la fenêtre est déjà affichée !

Alors il y a le "Repaint qui permet de rafraichir un ISF mais cela ne marche pas non plus...

"

@ bientôt

LouReeD

Re bonsoir,

Alors, comme vous le disiez, puisque l'USF n'est pas fermé, j'ai ajouté la ligne Unload "Userform" et je le réouvre ensuite. Mais cela engendre un autre problème.

Pour l'exemple, je n'ai mis qu'un USF, mais dans la réalité, cet USF s'ouvre à la suite d'un clic sur un bouton d'un autre USF. Sauf que cet autre USF est déjà en partie complété lorsque l'on clique sur le bouton et ce dernier disparaît également lors de l'exécution de ma macro. Pour le faire revenir, je suis contraint de le fermer et le rouvrir, ce qui fait disparaître les informations qui avaient été complétées.

Il faudrait alors, qu'avant de fermer le second USF (non visible dans l'exemple), les infos contenues dans les différentes TextBox soient temporairement sauvegardées dans des variables.

Ou sur une feuille, du coup plus de soucis !

@ bientôt

LouReeD

Je sais, j'ai déjà fait comme ça et c'est beaucoup plus simple. Cette fois-ci j'essaie cette approche pour voir si c'est possible et ce que ça donne.

Alors, j'ai légèrement avancé ;

J'ai changé les USF pour qu'ils se lancent en mode "non modal" puis j'ai créé un module dans lequel j'exécute les lignes suivantes :

Sub redo()
DashBoard.Hide
GestionPostes.Hide
DashBoard.Show
GestionPostes.Show
End Sub

Et là, les informations sont conservées.

Mais la liste dans ComboBox ne veut pas se mettre à jour

Avez-vous essayer de mettre un .Repaint quelque part, afin de rafraichir le USF...

Mais Est-ce que cela va rafraichir les combobox...

@ bientôt

LouReeD

Oui, j'ai également essayé avec .repaint (au lieu / avec .show dans le module "redo") mais ça n'a rien changé.

Si je veux vraiment m'y prendre comme ça, il faudra peut-être que je revoie la saisie sur l'USF ; avec une première étape pour ajouter des infos à une liste, décharger et relancer l'USF et ensuite compléter les TextBox de l'USF.

Bonsoir,

J'ai finalement opté pour la solution de fermer le tout, avec un message d'information et un moyen de relancer les UF rapidement. Toutes les modifications sont faites avant de compléter l'UF, donc, pas de perte d'information en cours de remplissage.

Bonne fin de soirée !

En tous cas ,il y a anguille sous roche...

Ceci est un contournement, le problème reste, mais d'où vient-il ?

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba userform ferme procedure fermeture"