fermeture userform sous controle [resolu]

nounours30

XLDnaute Nouveau
bonsoir

j'avais besoin de contrôler la fermeture d'un userform en obligeant l'utilisateur
à passer par un bouton "quitter"

après un peu de lecture, une petite compil commentée du résultat de mes recherches sur le forum

source collégiale notamment pour les sauts de lignes dans la msgbox d'avertissement

c'est simple mais ça marche et c'est du vba !!! exit les appels d'API

-------------------interdire fermeture par la croix ou raccourcis clavier------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'renvoie le mode de fermeture dans closemode

Select Case CloseMode 'test du mode de fermeture
Case 0 'Ou Constante vbFormControlMenu
MsgBox "Il est interdit de fermer par la croix" & Chr(10) & Chr(10) & "ou les raccourcis claviers" & Chr(10) & Chr(10) & "Utilisez le bouton quitter"
' & Chr(10) & Chr(10) & == sauts de lignes dans la MsgBox
'utiliser & Chr(13) & pour revenir a la ligne sans saut de ligne
Cancel = True 'on simule la fermeture
TextBox1.SetFocus ' on retourne dans l'userform
Case 1 'Ou Constante vbFormCode = fermeture par programmation
'MsgBox "Fermeture par programmation"
Cancel = False
Case Else
MsgBox "Fermeture non prévue"

End Select

End Sub

il faut bien sûr commencer par implanter un bouton quitter
dont le code contient au minimum

unload me

voilou a toutes fins utiles

bonne soirée à tous
 

Roland_M

XLDnaute Barbatruc
Re : fermeture userform sous controle [resolu]

Bonsoir, restons simple, ajouter ce code

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True ' ceci empêche la fermeture
End Sub

Private Sub ButtonQuit_Click()
Unload Me
End Sub

'créer un button sur ton userform nommé ButtonQuit

Roland
 

ccpapy

XLDnaute Impliqué
Re : fermeture userform sous controle [resolu]

bonjour,
Roland_M, ton code est peut-être un peu trop simple:p
je viens de le tester et impossible de fermer par quelque moyen que ce soit
du coup gestionnaire de taches et terminer le processus excel...
il doit y manquer quelque chose pour obtenir le résultat voulu:eek:
à+
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : fermeture userform sous controle [resolu]

Bonjour,
Tu veux faire quoi au juste ? Tu parles de processus Excel !?

Fermer l'Userform ? Fermer le Classeur ? Quitter Excel ?


Exemple ceci !?

ThisWorkbook.Close SaveChanges:=False '<<< fermer classeur sans Save
Application.Quit '<<<< quitter l'application

Roland.
 

ccpapy

XLDnaute Impliqué
Re : fermeture userform sous controle [resolu]

re,
je parlais de fermer l'usf, le code de nounours 30 fonctionne.
puis par curiosité, j'ai testé le tien :
le tien empeche totalement la fermeture de l'usf. de ce fait on ne peut plus rien faire, et du coup on ne peut même pas fermer excel. on reste bloqué sur cet usf.
voilà pourquoi je suis passé par le gestionnaire de taches.

pour Pierrot93
le tien fonctionne parfaitement (mais bon, ça, tu le savais déjà;))
bon après midi à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 523
Messages
2 089 309
Membres
104 119
dernier inscrit
karbone57