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 !
J'ai un petit problème avec le masquage et l'affichage d'un userform. J'ai joint un petit fichier de simulation pour que vous puissiez tester.
Mon userform est grand et donc masque une partie de l'écran. A un moment, je pose une question à propos de la feuille Excel sélectionnée et pour que l'utilisateur puisse bien voir la feuille, je souhaite masquer le userform puis le réafficher.
Bêtement, je pensais qu'avec un "me.visible = True/False" marcherait. Mais VBA pour Excel ne le permet pas. Je doit donc utiliser le couple (infernal) me.hide et me.show. Gros souci, chaque me.show appelle la procédure évènementielle UserForm_Activate et donc tout ce qui vient après n'est pas exécutée immédiatement mais quand je ferme le userform.
J'ai tracé tout ça avec une série de debug.print, je simule le comportement souhaité de ma procédure avec le bouton "BoutonTestHideShow" dans le userform
Marche à suivre pour reproduire cette trace dans la fenêtre d'exécution : cliquer sur "Lancer le test" puis sur "Test hide/show" (vous pouvez cliquer plusieurs fois) et pour finir sur "Fermer".
Que puis-je faire pour afficher/masquer le userform sans que UserForm_Activate ne s'exécute ?
Re : VBA USF: masquer temporairement un userform sans passer par UserForm_Activate
Bonjour,
essaye comme ceci, pas testé avec tes "Debug.Print", pas mon truc...
Code:
Dim b As Boolean
Private Sub BoutonFermer_Click()
Debug.Print "BoutonFermer_Click:debut"
Unload Me 'Décharge le formulaire en mettant le contenu à zéro (aux valeurs par défaut)
Debug.Print "BoutonFermer_Click:fin"
End Sub
Private Sub BoutonTestHideShow_Click()
Debug.Print "BoutonTestHideShow_Click:début"
Me.Hide
MsgBox (Me.Name & " masqué pour voir les feuilles de calcul")
MsgBox ("BoutonTestHideShow_Click: Userform visible : " & Me.Visible)
If Not Me.Visible Then b = True: Me.Show
Debug.Print "BoutonTestHideShow_Click:fin"
b = False
End Sub
Private Sub UserForm_Activate()
If b Then Exit Sub
Debug.Print "UserForm_Activate"
End Sub
Private Sub UserForm_Initialize()
Debug.Print "UserForm_Initialize:debut"
ActionInitiale
Debug.Print "UserForm_Initialize:fin"
End Sub
Private Sub ActionInitiale()
MsgBox "Action initiale"
Debug.Print "ActionInitiale"
End Sub
- 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