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

Fermeture de classeur

E

Eliot

Guest
Bonjour à toutes et tous.
J'ai créé un classeur sous XL2000, affiché en plein écran, avec des menus personnalisés pour diverses actions dont la fermeture. Mais je voudrais ne pas faire apparaitre les diverses icones et boutons qui permettent, entre autre, de fermer Excel. Il me faidrait aussi hinniber les combinaisons alt+f4 et ctrl+f4. Quelqu'un aurait-t-il la soluce à mon problème ?
Merci d'avance et je vous souhaite une bonne fête du 1er mai.
Eliot
 
S

schmail

Guest
Bonsoir Eliot

J'avais cela en stock, je m'excuse auprès de l'auteur car j'ai oublié le site source.
Dommage cela ne répond pas à toute tes demandes...@+

'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...
'(en fin de module une procédure pour tout rétablir)

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
 
E

Eliot

Guest
BJR au forum.

Merci à la personne qui m'a répondu mais qui n'a pas signé. Je peux lui dire que cela fonctionne très bien, c'est super mais j'ai oublié de préciser qu'il faut aussi mettre en place le même système pour le classeur actif, alors je lance encore un SOS .
Merci d'avance.
Eliot
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…