Comment empecher de quitter un formulaire

Résolu
jauretch Messages postés 3 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 25 avril 2006 - 25 avril 2006 à 20:21
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 28 avril 2006 à 10:03
Bonjour,





Je souhaite empecher l'utilisateur de quitter mon formulaire car je dois faire un test avant qu'il ne quitte.








C'est pourquoi je voudrais mettre un bouton "Quitter" qui me permettrait de faire mon test avant de quitter.





Pour cela, il me faudrait supprimer la croix en haut a droite du formulaire qui permet a l'utilisateur de quitter.





Merci

11 réponses

jauretch Messages postés 3 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 25 avril 2006
25 avril 2006 à 22:37
Je vous presente mes excuses car en fait ma demande concernait vb.net
et il suffit en fait de mettre la propriété controlbox a false



Merci
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 avril 2006 à 20:28
Salut,

Il faut faire un appel d'API. Pour cela, dans le code du UserForm, tout en haut, dans les déclarations, met ça :

Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

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


puis dans UserForm_Initialize :

Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF


Ta croix sera effacée.

@ ++
Mortalino
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
25 avril 2006 à 20:39
tu n'es pas obligé de supprimer la croix, quand l'utilisateur clique sur la croix un evenement survient, query_unload, dans lequel tu peux faire ton test et eventuellement annuler la "demande" de fermeture du formulaire
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
25 avril 2006 à 20:47
Pour empécher de fermer un formulaire avec le bouton système, on peut écrire le code suivant dans la procédure Form_QueryUnload

Sub Form_QueryUnload(Cancel As Indeger,UnloadMode As Integer)
If UnloadMode = 0 Then
Cancel = True
Exit Sub
End If
End sub

explication : si l'on clique sur le bouton système, UnloadMode est égal à zéro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jauretch Messages postés 3 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 25 avril 2006
25 avril 2006 à 20:49
Comment est ce que j'annule la demande de fermeture du formulaire?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 avril 2006 à 20:51
Petite précision, si tu es en VBA, c'est Form_QueryClose avec la technique d'Alain Proviste & jpierre
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 avril 2006 à 20:59
en mettant le code de jpierre.

englobe le avec ta condition.

Sub Form_QueryUnload(Cancel As Indeger,UnloadMode As Integer)

If UnloadMode = 0 Then
If TonTest = False Then
Cancel = True
MsgBox "Vous avez oublier de faire..."
Exit Sub
End If
End If
End sub
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
25 avril 2006 à 20:59
Réponse à ta question "Comment est ce que j'annule la demande de fermeture du formulaire?":
Dans le code que je t'ai fourni, j'affecte la valeur True à la variable Cancel (qui veut dire annuler en anglais), ceci annule la méthode Unload du formulaire.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
27 avril 2006 à 13:04
Salut à tous,

un exemple de plus de description du problème pas assez succinte, et des chercheurs qui bossent pour le plaisir! (en tout cas grand merci à eux)
au moins jauretch, acceptes ta réponse, pour qu'elle serve, et que personne ne revienne!

PS: je ne t'en veux pas, je t'explique.
à+

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 avril 2006 à 06:24
Apparement "réponse acceptée" n'est pas connu de tous. Le réglement n'est malheureusement pas lu par tout le monde !!

4 Msg et au revoir... plus d'interêt à CS maintenant que la Soluce est trouvée, vraiment dommage.

Mortalino
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 avril 2006 à 10:03
Oui,
du coup, me demande-je, serait-il, déontologiquement parlant, inconvenant que, dans pareil cas, un Admin CS accepte la réponse à la place du demandeur fuyant (au delà, bien sûr, d'un délai prévu dans le règlement)?

Au pire, le fugueur revient, et voit qu'il a manqué à sa famille, et que celle-ci s'est occupé de ses petites affaires pendant son absence, ce qui contribuerait peut-être à lui faire prendre conscience que le monde peut tourner sans lui, mais qu'avec lui c'est mieux.

m'enfin, pas de quoi nous entamer le moral, juste l'espoir :)

à+ mortalino
rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
Rejoignez-nous