Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fermer un userform

10 réponses
Avatar
Lionel
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel

10 réponses

Avatar
Youky
Bonsoir Lionel,
ceci empêche la fermeture par la croix
.......a mettre en QueryClose
Youky

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub
Avatar
Lionel
Merci youki !
mais je veux que la fernetre se ferme et pas empecher cela !
Lionel
"Youky" a écrit dans le message de news:

Bonsoir Lionel,
ceci empêche la fermeture par la croix
.......a mettre en QueryClose
Youky

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub




Avatar
MichDenis
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple :

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme évidemment tu
as sorti du contrôle textbox, cet événement se produit et seulement après le formulaire
se ferme. C'est dans la logique des choses mais emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel
Avatar
Olivier B
Dans ce cas n'affiche pas la croix... ce qui résoud ton problème et la seule
sortie du userform sera alors cancel !!!

ça contourne ton problème

Je ne me souviens plus de quel site j'avais pris ça mais je pense que ça
peux t'aider


'-- Dans la partie Déclaration de la Form :
Private Const SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&

Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long

Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long)
As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


'-- Dans l'évènement Initialise de la Form :
Private Sub UserForm_Initialize()
Dim hSysMenu As Long
Dim MeHwnd As Long
MeHwnd = FindWindowA(vbNullString, Me.Caption)
If MeHwnd > 0 Then
hSysMenu = GetSystemMenu(MeHwnd, False)
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
Else
MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical
End If
End Sub
--
olivier



Merci youki !
mais je veux que la fernetre se ferme et pas empecher cela !
Lionel
"Youky" a écrit dans le message de news:

Bonsoir Lionel,
ceci empêche la fermeture par la croix
.......a mettre en QueryClose
Youky

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub









Avatar
Lionel
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre fatigué...
lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur la
croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple :

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme évidemment
tu

as sorti du contrôle textbox, cet événement se produit et seulement après
le formulaire

se ferme. C'est dans la logique des choses mais emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel





Avatar
MichDenis
Quand tu cliques sur le bouton X pour fermer ton formulaire,

Publie ici la procédure qui s'exécute avant que le formulaire se ferme.



"Lionel" a écrit dans le message de news:
462fc88a$0$27385$
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre fatigué...
lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur la
croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple :

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme évidemment
tu

as sorti du contrôle textbox, cet événement se produit et seulement après
le formulaire

se ferme. C'est dans la logique des choses mais emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel





Avatar
Lionel
comme je l'ai deja dit, il s'agit d'un userform avec un calendrier, un
bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform). lorsque je clique sur
annuler je mets la valeur 1 en EA3 de la feuille principale et donc je teste
cette cellule qui fait sauter la procedure vers Sortie: par Goto Sortie:
si elle contient 1 .
donc la procedure du bouton Annuler

Sheets("Feuille principale").Select
[EA3].Value = 1
Unload Me

"MichDenis" a écrit dans le message de news:

Quand tu cliques sur le bouton X pour fermer ton formulaire,

Publie ici la procédure qui s'exécute avant que le formulaire se ferme.



"Lionel" a écrit dans le message de news:
462fc88a$0$27385$
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre
fatigué...

lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur la
croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple :

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme
évidemment


tu
as sorti du contrôle textbox, cet événement se produit et seulement
après


le formulaire
se ferme. C'est dans la logique des choses mais emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel










Avatar
JLuc
*Bonjour Lionel*,
Ce userform "Calendrier", c'est toi qui l'a créé ?
Si oui, dans la théorie, si tu clic sur la croix rien ne doit
s'executer excepter ces procédures :
Private Sub Userform_Deactivate()
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
Private Sub UserForm_Terminate()

Ce qu'il ne faut pas : Appeler ta procédure Ok_Click() dans une de ces
procédures
Si tu n'a rien mis dedans, le clic sur la croix ferme le formulaire
sans rien faire

comme je l'ai deja dit, il s'agit d'un userform avec un calendrier, un
bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform). lorsque je clique sur
annuler je mets la valeur 1 en EA3 de la feuille principale et donc je teste
cette cellule qui fait sauter la procedure vers Sortie: par Goto Sortie:
si elle contient 1 .
donc la procedure du bouton Annuler

Sheets("Feuille principale").Select
[EA3].Value = 1
Unload Me

"MichDenis" a écrit dans le message de news:

Quand tu cliques sur le bouton X pour fermer ton formulaire,

Publie ici la procédure qui s'exécute avant que le formulaire se ferme.



"Lionel" a écrit dans le message de news:
462fc88a$0$27385$
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre fatigué...
lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur la
croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple :

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme évidemment
tu as sorti du contrôle textbox, cet événement se produit et seulement
après le formulaire se ferme. C'est dans la logique des choses mais
emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
Lionel
Salut !
je ne comprends pas cette partie de la reponse :

"...Ce qu'il ne faut pas : Appeler ta procédure Ok_Click() dans une de ces
procédures
Si tu n'a rien mis dedans, le clic sur la croix ferme le formulaire
sans rien faire ..."

j'ai un bouton "ok" donc j'ai forcement une procedure xxxx_click()...
merci de m'eclairer...

"JLuc" a écrit dans le message de news:

*Bonjour Lionel*,
Ce userform "Calendrier", c'est toi qui l'a créé ?
Si oui, dans la théorie, si tu clic sur la croix rien ne doit
s'executer excepter ces procédures :
Private Sub Userform_Deactivate()
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
Private Sub UserForm_Terminate()

Ce qu'il ne faut pas : Appeler ta procédure Ok_Click() dans une de ces
procédures
Si tu n'a rien mis dedans, le clic sur la croix ferme le formulaire
sans rien faire

comme je l'ai deja dit, il s'agit d'un userform avec un calendrier, un
bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform). lorsque je clique sur
annuler je mets la valeur 1 en EA3 de la feuille principale et donc je
teste


cette cellule qui fait sauter la procedure vers Sortie: par Goto
Sortie:


si elle contient 1 .
donc la procedure du bouton Annuler

Sheets("Feuille principale").Select
[EA3].Value = 1
Unload Me

"MichDenis" a écrit dans le message de news:

Quand tu cliques sur le bouton X pour fermer ton formulaire,

Publie ici la procédure qui s'exécute avant que le formulaire se ferme.



"Lionel" a écrit dans le message de news:
462fc88a$0$27385$
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre
fatigué...



lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur
la



croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple
:





'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme
évidemment




tu as sorti du contrôle textbox, cet événement se produit et seulement
après le formulaire se ferme. C'est dans la logique des choses mais
emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)





End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut
a




droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment
faire




pour juste
"Unload Me"

Merci
Lionel




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O







Avatar
JLuc
*Bonjour Lionel*,

Salut !
je ne comprends pas cette partie de la reponse :

"...Ce qu'il ne faut pas : Appeler ta procédure Ok_Click() dans une de ces
procédures
Si tu n'a rien mis dedans, le clic sur la croix ferme le formulaire
sans rien faire ..."

j'ai un bouton "ok" donc j'ai forcement une procedure xxxx_click()...
merci de m'eclairer...
Si tu clic sur la croix rouge, seules les procédures :

Private Sub Userform_Deactivate()
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
Private Sub UserForm_Terminate()
seront exécutées. Si tu n'as pas de code dans ces procédures, rien ne


sera exécuté. Si tu as du code, c'est là qu'il faut enlever ce qui n'a
rien à y faire.
Voila ;-)


"JLuc" a écrit dans le message de news:

*Bonjour Lionel*,
Ce userform "Calendrier", c'est toi qui l'a créé ?
Si oui, dans la théorie, si tu clic sur la croix rien ne doit
s'executer excepter ces procédures :
Private Sub Userform_Deactivate()
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
Private Sub UserForm_Terminate()

Ce qu'il ne faut pas : Appeler ta procédure Ok_Click() dans une de ces
procédures
Si tu n'a rien mis dedans, le clic sur la croix ferme le formulaire
sans rien faire

comme je l'ai deja dit, il s'agit d'un userform avec un calendrier, un
bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform). lorsque je clique sur
annuler je mets la valeur 1 en EA3 de la feuille principale et donc je
teste cette cellule qui fait sauter la procedure vers Sortie: par Goto
Sortie: si elle contient 1 .
donc la procedure du bouton Annuler

Sheets("Feuille principale").Select
[EA3].Value = 1
Unload Me

"MichDenis" a écrit dans le message de news:

Quand tu cliques sur le bouton X pour fermer ton formulaire,

Publie ici la procédure qui s'exécute avant que le formulaire se ferme.



"Lionel" a écrit dans le message de news:
462fc88a$0$27385$
Désolé je dois etre c...n ou tres fatigué ...je ne pense pas etre
fatigué... lol
mais je ne comprends pas
j'ai mon userform avec mon calendrier, un bouton ok (qui recupere la
date) un bouton annuler (qui ferme mon userform)
en etant clair , je fais quoi et comment pour que lorsque je clique sur la
croix (close) de ma fenetre du useform , ce dernier se ferme ?
Merci
lionel
"MichDenis" a écrit dans le message de news:
#Otnz$
Tu dois utiliser l'événement suivant d'un contrôle Textbox par exemple

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-----------------------------

Avec l'événement précédent, lorsque tu cliques sur le X, comme évidemment
tu as sorti du contrôle textbox, cet événement se produit et seulement
après le formulaire se ferme. C'est dans la logique des choses mais
emmerdant quand même !



Au lieu d'utiliser l'événement Exit, utilise "BeforeUpDate
'-------------------------------
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
'-------------------------------




"Lionel" a écrit dans le message de news:
462fb4be$0$27380$
Bonsoir

J'appelle un userform qui possede un bouton OK et un Annuler
Rien de bien passionnant
Mais lorsue mon userform est ouvert si je clique sur la croix en haut a
droite (pour fermer la fenetre) ma macro (OK) se lance ...
Je ne trouve pas d'evenement lie au clique sur cette croix comment faire
pour juste
"Unload Me"

Merci
Lionel




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O