Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Verrouillage fermeture classeur

M

Marc

Guest
Comment puis-je verrouiller (en VBA) la possibilite de fermer un classeur avec la croix en haut a droite du classeur
 
M

Marc

Guest
Je connais la fonction Sub UserForm_QueryClose......mais je ne sais pas ou la placer pour quelle fonctionne a l'ouverture de la feuille( template) a partir de mon application
 
F

Fred

Guest
ou alors essaye ca (a modifier selon besoins) tiré de disciplus:

'Désactiver le menu système d'Excel et les commandes système
'de la fenêtre d'Excel (dont la croix de fermeture)
'permet de choisir précisément ce sur quoi on veut agir...

Private Const MF_BYPOSITION As Long = &H400
Private Const mlNUM_SYS_MENU_ITEMS As Long = 9
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu 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

'Vasant Nanavati, Andrew Baker (mpep), fs

Public Sub DisableSystemMenu()
Dim lHandle As Long, lCount As Long

On Error Resume Next
lHandle = FindWindowA(vbNullString, Application.Caption)
If lHandle <> 0 Then

'désactive la croix de fermeture d'Excel
'et la commande Fermeture du menu système
DeleteMenu GetSystemMenu(lHandle, False), 6, &H400
'supprime le trait de séparation du menu système avant Fermeture
DeleteMenu GetSystemMenu(lHandle, False), 5, &H400
'supprime la commande Agrandissement du menu système
'et la commande Agrandir de la fenêtre
DeleteMenu GetSystemMenu(lHandle, False), 4, &H400
'supprime la commande Réduction du menu système
'et désactive la commande Réduire de la fenêtre
DeleteMenu GetSystemMenu(lHandle, False), 3, &H400
'désactive la commande Déplacement du menu système
DeleteMenu GetSystemMenu(lHandle, False), 2, &H400
'supprime la commande Déplacement du menu système
'et désactive la commande Dimension
DeleteMenu GetSystemMenu(lHandle, False), 1, &H400
'supprime la commande Restauration du menu système
'et désactive la commande Restaurer de la fenêtre
DeleteMenu GetSystemMenu(lHandle, False), 0, &H400

End If
End Sub

'rétablit le menu sytème et les commandes de fenêtre (Réduire, Agrandir, Fermer)
Public Sub EnableSystemMenu()
Dim lHandle As Long
On Error Resume Next
lHandle = FindWindowA(vbNullString, Application.Caption)
GetSystemMenu lHandle, True
End Sub
 
B

Ben B

Guest
Super le code;merci ca fonctionne parfaitement.Malheureusement, je souhaite desactiver la croix de fermeture de la Feuille et non du nenu systeme.
Peut-etre connait-tu la solution.
 

Discussions similaires

Réponses
2
Affichages
210
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…