Microsoft 365 Définir la touche échap pour fermer Userform avec onglets Multipage

Louloulou4

XLDnaute Junior
Bonjour à tous,
Je viens vers vous pour un problème (vous vous en doutez), que je n'arrive pas à régler.
L'idée est la suivante : j'ai un USERFORM comprenant un Multipage avec 3 onglets. Je voudrai pouvoir fermer les onglets en appuyant sur la touche Echap.

J'ai trouvé sur le forum une aide, en "feintant" Excel, en créant un Commandbutton caché intitulé avec le NomX (par exemple), ce qui donne comme code :

Private Sub UserForm_INITIALIZE ()
With NomX
.Cancel = True
.Move Me.Width, Me.Height, 1, 1
End With
End Sub

Cette partie ne pose pas de problèmes et fonctionne nickel.
Le 2nde partie de la formule fonctionne aussi, cad qu'en changeant de page et en allant sur la 2nde page et en appliquant ce code cela fonctionne :

Private Sub MultiPage1_Change()
With NomY
.Cancel = True
.Move Me.Width, Me.Height, 1, 1
End With
End Sub

Jusque là tout va bien ! Or si je réitère l'opération en intégrant un 3ème onglet (et un 3ème Commandbutton intitulé NomZ) en intégrant le code suivant :

Private Sub MultiPage1_Change()
With NomY
.Cancel = True
.Move Me.Width, Me.Height, 1, 1

End With

With NomZ
.Cancel = True
.Move Me.Width, Me.Height, 1, 1

End With
End Sub

cela ne fonctionne plus...

Ai-je mal imbriqué ma formule End With ? Le souci étant, que je ne peux malheureusement pas mettre en Commandbutton NomY dans le 3ème onglet car il ne peut pas y'avoir 2 Commandbutton portant le même nom (ce qui est normal)...

DONC, comment faire ? Mettre au début de Multipage1_Change() des Arguments de style Dim X As String ? Et si oui, quelle serait l'écriture du code ?

D'avance merci !


Loris
 

vgendron

XLDnaute Barbatruc
Bonjour

Déjà.. je ne comprend pas ta notion de "fermer l'onglet"

sur un multipage.. il y a plusieurs pages (d'ou le nom)
parmi toutes les pages, une seule est active
pour changer de page, il suffit de cliquer sur celle que tu souhaites..
donc je ne vois pas l'interet de ton bouton masqué qui fait.. je ne sais pas quoi en fait..
et vu qu'il n'y a pas de fichier exemple..impossible d'aller voir plus loin...
 

Louloulou4

XLDnaute Junior
Bonjour

Déjà.. je ne comprend pas ta notion de "fermer l'onglet"

sur un multipage.. il y a plusieurs pages (d'ou le nom)
parmi toutes les pages, une seule est active
pour changer de page, il suffit de cliquer sur celle que tu souhaites..
donc je ne vois pas l'interet de ton bouton masqué qui fait.. je ne sais pas quoi en fait..
et vu qu'il n'y a pas de fichier exemple..impossible d'aller voir plus loin...
 

Pièces jointes

  • ESSAI.xlsm
    262.4 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
Bonjour
pour fermer le userform avec la touche esc il faut utiliser l'event keydown du userform et du control multipage
if keycode=27 then unload me
tout simplement
apres si il a plus de controls en first plan il faudra les faire aussi
car l'event déclenché sera celui du control qui a le focus
 

vgendron

XLDnaute Barbatruc
en appliquant simplement l'idée de @patricktoulon que je salue au passage)
ton code devient ca
VB:
Private Sub MultiPage1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub

Private Sub UserForm_INITIALIZE()
'
'With Echape
'
'     .Cancel = True
'     .Move Me.Width, Me.Height, 1, 1
'
'End With

End Sub

Private Sub MultiPage1_Change()

'With Echape1
'
'     .Cancel = True
'     .Move Me.Width, Me.Height, 1, 1
'
'End With

End Sub

Private Sub CommandButton4_Click()

Unload Me

End Sub

'Private Sub Echape1_Click()
'
'Unload Me
'
'End Sub

'Private Sub Echape2_Click()
'
'Unload Me
'
'End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

'Private Sub Echape_Click()
'
'Unload Me
'
'End Sub

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 106
Messages
2 116 271
Membres
112 706
dernier inscrit
Pierre_98