Excel-vba comment désactiver boutons Réduire, Agrandir et Fermer

michels2011 Messages postés 4 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 août 2005 - 20 avril 2005 à 17:41
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 20 janv. 2014 à 20:52
Bonjour à tous, J'ai une application excel/vba avec plusieurs classeurs ouverts
simultanément. J’ai ma propre barre de menu avec un choix pour fermer l’application.


J’aimerais savoir comment je peux désactiver les boutons Réduire, Agrandir et Fermer


des classeurs ouverts. Et bien sur, les réactiver quand je ferme.


J'ai cherché, mais en vain.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />



Merci à l’avance




Michel

5 réponses

hcthibaut Messages postés 8 Date d'inscription mercredi 25 août 2010 Statut Membre Dernière intervention 25 octobre 2010 1
16 sept. 2010 à 17:00
Mais ça ne marche pas chez moi je pense qu'il faut trouver d'autres astuces pour moi svp
merci
Thibaut KACOU, LeDévéloppeur
1
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
20 avril 2005 à 19:59
Lut, je te le serts tel-quel


'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

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
16 sept. 2010 à 22:54
Bonjour,
Ce code est éprouvé donc t'as du faire une bourde quelque part.
Il n'est pas de moi, mais je l'ai déjà utilisé.

Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 sept. 2010 à 09:23
Salut,

comprend bien que ton besoin n'existe pas dans excel en tout cas pas de façon simple.

valtrase ta donné la methodes la plus simple. Il suffit pour l'utiliser de coller le code dans un module

puis de faire appel à la macro "DisableSystemMenu" à l'ouverture de ton fichier via l'evenement "Workbook_Open"

Enfin de ne pas oublier de retablire la situation avec la macro "EnableSystemMenu" et ce via l'evenement

"Workbook_BeforeClose".

A+
0

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

Posez votre question
mohamed49590 Messages postés 3 Date d'inscription dimanche 19 janvier 2014 Statut Membre Dernière intervention 20 janvier 2014
20 janv. 2014 à 20:44
chercher dans le code du form au maximizebox et donner lui le valeur false
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
20 janv. 2014 à 20:52
Bonsoir, la question remonte à 2005, merci de vouloir aider, mais on peut espérer que la réponse a été trouvée depuis.
Je déplace vers VBA
0
Rejoignez-nous