Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload ...)

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
Bonjour au forum,

malgré mes recherches dans de nombreuses sources, je n'arrive pas à comprendre pourquoi un userform reste affiché à l'écran malgré une instruction qui devrait l'en effacer.
J'ai bien compris la différence entre userform1.hide et unload userform1, mais ni l'une ni l'autre de ces instructions "vide" l'écran du userform

Je passe par plusieurs étapes :
1) j'affiche mon userform
2) avec ce userform, je recueille les choix de l'utilisateur (données stockées dans un onglet)
3) je lance un traitement et c'est là que j'aimerais "purger" l'écran et ne plus afficher ce userform

C'est donc par unload userform1 que je commence, avant le début du traitement, mais malheureusement, en vain.

Quelqu'un a-t-il une idée ?

Merci d'avance
 
Re : Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload

Salut Roland_M,

effectivement, ça devient plus clair, je comprends mieux pourquoi ça coince même si je suis loin de tout avoir assimilé ...
Au moins j'ai cerné pourquoi ça déraille, je poursuis mes investigations !
Encore merci pour tes explications, toujours rigoureuses et contructives

Cordialement
Sebast
 
Re : Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload

Bonsoir
Tout à fait d'accord Roland , la fermeture doit être dans le Bloc de l'USF .... cela me paraissait évident puisque à 99% c'est suite à un clic de bouton DANS l'USF .. sauf cas tordu!!! ou l'on appelle un autre USF temporaire, alors il faut refaire le chemin de fermeture dans le bon ordre
Sinon par contre j'ai quand même eu le Pb de fermeture ( en 2 fois) , et l'USF principal qui ne se raffichait pas , ceux qui m'ont aidé sur ce Pb à cette époque m'avaient aussi auiguillé sur la gestion du MODAL ou Pas !!
 
Re : Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload

Bonjour à tous,

Tout à fait d'accord Roland , la fermeture doit être dans le Bloc de l'USF
perso vois pas ce qui empêche de placer un "unload" dans un autre module que celui de l'usf.... ou alors quelque chhose doit m'échapper....

bonne journée
@+
 
Re : Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload

re:
salut à vous,

tout à fait pierrot...

mais, le vrai problème, c'est que beaucoup, surtout débutants, oublient qu'une fois Userform1.Show
le code qui suit juste après ne sera exécuté qu'après la fermeture de cet Userform1 !
et il faut impérativement le prévoir !

EDIT:
j'oublié aussi, il est parfois nécessaire, après la fermeture de l'userf, lorsqu'on le ferme en dehors de son propre bloc
placer l'instruction > DoEvents

et je crois que pour notre ami au départ il aurait fallu y penser (j'ai oublié aussi)

exemple son code ICI ##############

Sub Periode_Anfrage()
Sheets("Paramètres").Select
Range("G100").Select
UserForm_Wahl_Tag_Monat_JAhr.Show' <<<<<< il l'appel <<<<<<
End Sub

Sub Arbeitsmappe_hinzufuegen()
Unload UserForm_Wahl_Tag_Monat_JAhr ' <<<<< il close <<<<<<
DoEvents ' <<< ICI ##############

Application.ScreenUpdating = False
Dim i As Byte
Sheets("Paramètres").Select
...
...
...
 
Dernière édition:
Re : Affichage intempestif d'un userform (ou plutôt "non désaffichage" malgré unload

Salut à tous,

merci pour cette précision et désolé pour ma réponse tardive : je m'étais déjà fait à l'idée que je n'arriverai pas à unloader le userform !

Avec cette instruction DoEvents, ça marche et surtout, ça a le mérite de la clarté. Impeccable pour mon besoin.
Par contre, j'ai lu que ça pouvait interférer avec d'autres instructions mais je n'en sais pas plus ...


Un grand merci à tous et bon mardi férié !













re:
salut à vous,

tout à fait pierrot...

mais, le vrai problème, c'est que beaucoup, surtout débutants, oublient qu'une fois Userform1.Show
le code qui suit juste après ne sera exécuté qu'après la fermeture de cet Userform1 !
et il faut impérativement le prévoir !

EDIT:
j'oublié aussi, il est parfois nécessaire, après la fermeture de l'userf, lorsqu'on le ferme en dehors de son propre bloc
placer l'instruction > DoEvents

et je crois que pour notre ami au départ il aurait fallu y penser (j'ai oublié aussi)

exemple son code ICI ##############

Sub Periode_Anfrage()
Sheets("Paramètres").Select
Range("G100").Select
UserForm_Wahl_Tag_Monat_JAhr.Show' <<<<<< il l'appel <<<<<<
End Sub

Sub Arbeitsmappe_hinzufuegen()
Unload UserForm_Wahl_Tag_Monat_JAhr ' <<<<< il close <<<<<<
DoEvents ' <<< ICI ##############

Application.ScreenUpdating = False
Dim i As Byte
Sheets("Paramètres").Select
...
...
...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour