OVH Cloud OVH Cloud

Interdire une Sub lors de la fermeture d'un UserForm

19 réponses
Avatar
cphil
Bonjour/soir à tous,

Je souhaite donc interdire une Sub à la fermeture
d'un UserForm par la croix en haut à droite, une piste...
un bout de code....

Merci pour votre aide.

-cphil-

10 réponses

1 2
Avatar
gloops
cphil a écrit :

Bonjour/soir à tous,

Je souhaite donc interdire une Sub à la fermeture
d'un UserForm par la croix en haut à droite, une piste...
un bout de code....

Merci pour votre aide.

-cphil-




Bonsoir,

Peut-être ne suis-je pas très en forme, mais ça veut dire quoi,
interdire une Sub ?
Avatar
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message
de news:e%
Bonjour/soir à tous,

Je souhaite donc interdire une Sub à la fermeture
d'un UserForm par la croix en haut à droite, une piste...
un bout de code....

Merci pour votre aide.

-cphil-



Bonjour/soir,

Tu veu dire quelquechose comme
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If MsgBox("Voulez-vous vraiment quitter?", vbYesNo) = vbNo Then
Cancel = True
End If
End Sub
?

Sinon, précise ta question ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
cphil
Rebonjour/soir,

Je reprends le fil suite à un petit diner entre amis.
Exemple:
avec un contrôle TextBox ou autre ayant une condition de
renseignement ou de sélection avec message d'information, comment
éviter l'exécution de cette condition si le contrôle ayant le focus n'est
pas renseigné( c'est à dire vide dans mon langage d'apprenti programmeur )
lorsque l'on quitte le UserForm
Pas simple à expliquer, j'espère avoir été plus clair, merci pour votre
patience
et votre diligence.

Bonne nuit.

-cphil-


----- Original Message -----
From: "François Picalausa"
Newsgroups: microsoft.public.fr.vb
Sent: Saturday, December 20, 2003 8:56 PM
Subject: Re: Interdire une Sub lors de la fermeture d'un UserForm


"cphil" <cazenave.(suffitspam) a écrit dans le message
de news:e%
> Bonjour/soir à tous,
>
> Je souhaite donc interdire une Sub à la fermeture
> d'un UserForm par la croix en haut à droite, une piste...
> un bout de code....
>
> Merci pour votre aide.
>
> -cphil-

Bonjour/soir,

Tu veu dire quelquechose comme
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If MsgBox("Voulez-vous vraiment quitter?", vbYesNo) = vbNo Then
Cancel = True
End If
End Sub
?

Sinon, précise ta question ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com




Avatar
gloops
Ah, ben tu vois, là, on comprend mieux.

Pourtant, peut-être est-ce une lacune de ma part, j'avoue que ce tu dis
là m'évoque des souvenirs bien plus précis sous Access que sous VB6.

Pourrais-tu rappeler le nom de la propriété du TextBox qui impose la
saisie avant d'avoir quitté le formulaire ?
_______________
cphil a écrit :

Rebonjour/soir,

Je reprends le fil suite à un petit diner entre amis.
Exemple:
avec un contrôle TextBox ou autre ayant une condition de
renseignement ou de sélection avec message d'information, comment
éviter l'exécution de cette condition si le contrôle ayant le focus n'est
pas renseigné( c'est à dire vide dans mon langage d'apprenti programmeur )
lorsque l'on quitte le UserForm
Pas simple à expliquer, j'espère avoir été plus clair, merci pour votre
patience
et votre diligence.

Bonne nuit.

-cphil-




Avatar
cphil
Bonjour,

Désolé pour mon imprécision., c'est sous Exel d'Office XP.
Le code:
Private Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox = "" Then
MsgBox "bla bla bla"
Cancel = True
End If
End Sub

- Lorsque je quitte la UserForm (en laissant le TextBox vide),
celle-ci disparaît et bien sur la MsgBox s'affiche et attends son petit
click.
Si je veux quitter la UserForm sans renseigner le TextBox, comment
interdire l'affichage du MsgBox ?

Merci,A+.

P.S. -Celà peut paraître ilogique, mais impossible n'est pas VBA!
-------------
"gloops" a écrit dans le message de
news:
Ah, ben tu vois, là, on comprend mieux.

Pourtant, peut-être est-ce une lacune de ma part, j'avoue que ce tu dis
là m'évoque des souvenirs bien plus précis sous Access que sous VB6.

Pourrais-tu rappeler le nom de la propriété du TextBox qui impose la
saisie avant d'avoir quitté le formulaire ?


Avatar
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message
de news:%
Bonjour,

Désolé pour mon imprécision., c'est sous Exel d'Office XP.
Le code:
Private Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox = "" Then
MsgBox "bla bla bla"
Cancel = True
End If
End Sub

- Lorsque je quitte la UserForm (en laissant le TextBox vide),
celle-ci disparaît et bien sur la MsgBox s'affiche et attends son
petit click.
Si je veux quitter la UserForm sans renseigner le TextBox, comment
interdire l'affichage du MsgBox ?



Bonjour/soir,

là, c'est on ne peut plus clair :-)

Essaye ceci:
Private Quit As Boolean

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not Quit And TextBox1.Text = "" Then
MsgBox "bla..."
Cancel = True
End If
End Sub

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

Il faudrait ajouter un select case sur le close mode pour tester si on femre
via la petite croix ou si c'est une fermeture forcée par le système, ...

Sinon, attention aux If TextBox = "" Then
On se repose sur la propriété par défaut.
-Celà n'est pas très lisible
-Celà demande plus de temps à Excel
-Dans certains langages ce n'est pas supporté (donc, difficultés de portage
si besoin en est)
-Si dans la version suivante de VBA la propriété par défaut change, la
condition deviendra erronné.
Enfin bref, spécifie toujours la propriété à laquelle tu veux accéder, c'est
la meilleure chose à faire pour ne pas se tromper ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Jean-Marc
"cphil" <cazenave.(suffitspam) a écrit dans le message de
news:%
Bonjour,

Désolé pour mon imprécision., c'est sous Exel d'Office XP.
Le code:
Private Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox = "" Then
MsgBox "bla bla bla"
Cancel = True
End If
End Sub

- Lorsque je quitte la UserForm (en laissant le TextBox vide),
celle-ci disparaît et bien sur la MsgBox s'affiche et attends son petit
click.
Si je veux quitter la UserForm sans renseigner le TextBox, comment
interdire l'affichage du MsgBox ?



Hello,

tout devient limpide :-)

Voici une façon de faire:

Dim FORCE_QUIT As Boolean

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' on teste si on veut "forcer le passage"
If FORCE_QUIT Then
Exit Sub ' hop on s'en va sans avertissement
End If
' sinon cas général
If TextBox1.Text = "" Then ' penser à tester la propriété, pas le
controle entier
Cancel = False
MsgBox "tutu"
End If
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' MsgBox "On passe dans cet evenement en premier"
FORCE_QUIT = True ' on force la variable à TRUE
End Sub
Avatar
Jean-Marc
> Dim FORCE_QUIT As Boolean

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' on teste si on veut "forcer le passage"
If FORCE_QUIT Then
Exit Sub ' hop on s'en va sans avertissement
End If
' sinon cas général
If TextBox1.Text = "" Then ' penser à tester la propriété, pas le
controle entier
Cancel = False



==>> Il faut bien sur Cancel = False, comme dans le code original..

MsgBox "tutu"
End If
End Sub


Avatar
Jean-Marc
grr Cancel = True ' // je vais y arriver !
Avatar
cphil
Merci à vous pour vos solutions :-)

Il me faut un peu de temps pour assimiler et tester.
A+ sur un autre fil.

-cphil-
-----------------
"Jean-Marc" a écrit dans le message de
news:3fe57778$0$301$
"cphil" <cazenave.(suffitspam) a écrit dans le message de
news:%
> Bonjour,
>
> Désolé pour mon imprécision., c'est sous Exel d'Office XP.
> Le code:
> Private Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> If TextBox = "" Then
> MsgBox "bla bla bla"
> Cancel = True
> End If
> End Sub
>
> - Lorsque je quitte la UserForm (en laissant le TextBox vide),
> celle-ci disparaît et bien sur la MsgBox s'affiche et attends son petit
> click.
> Si je veux quitter la UserForm sans renseigner le TextBox, comment
> interdire l'affichage du MsgBox ?

Hello,

tout devient limpide :-)

Voici une façon de faire:

Dim FORCE_QUIT As Boolean

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' on teste si on veut "forcer le passage"
If FORCE_QUIT Then
Exit Sub ' hop on s'en va sans avertissement
End If
' sinon cas général
If TextBox1.Text = "" Then ' penser à tester la propriété, pas le
controle entier
Cancel = False
MsgBox "tutu"
End If
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' MsgBox "On passe dans cet evenement en premier"
FORCE_QUIT = True ' on force la variable à TRUE
End Sub




1 2