OVH Cloud OVH Cloud

N° ID ?

19 réponses
Avatar
RV
Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel) dans la
barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible = False
serait la bonne structure de code pour rendre cette icône invisible ?
Merci

Cordialement

RV

9 réponses

1 2
Avatar
anonymousA
ben , là j'ai pas trop le temps mais je vais réfléchir à la question.
Exemple intéressant à suivre. Si entre temps tu as du nouveau , merci de
mettre sur le forum la réponse.

A+

Re-bonsoir,

En fait j'ai créé une barre de menu perso avec MenuBar:= True et cette icône
reste.
Je voudrais tout simplement la désactiver pour ne plus pouvoir réduire la
fenêtre.
En revanche je souhaite conserver la réduction de l'application.
Merci

Cordialement

RV

"anonymousA" a écrit dans le message de
news:42238a3b$0$19320$

non, effectivement je n'avais pas répondu à la bonne question. A ma
connaissance, aucun moyen .
au mieux, si je puis dire, tu peux invalider la barre des menus complète.
ceci dit dans le menu de cette icone , que veux tu réellement empêcher ?

A+


Bonsoir JPS,

Peut-on au moins la griser afin de la rendre inutilisable :
Application.CommandBars(1).Controls(ID:= ?).Enabled = False par exemple



?

Merci

Cordialement

RV


"jps" a écrit dans le message de
news:


j'avais cru comprendre que RV parlait de l'icône Excel A GAUCHE de




Fichier

dans la barre de menus ; AMHA, elle ne peut pas être rendue invisible




par

le


Application.CommandBars(1) etc.... car ce n'est pas un bouton


"manipulable"


comme Fichier Edition etc...
jps

"anonymousA" a écrit dans le message de
news:422381d3$0$19320$


bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance c'est





celui

qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)



ainsi


'que l'icone en haut à gauche d'une application excel afin d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+



Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)




dans


la


barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>
False





serait la bonne structure de code pour rendre cette icône invisible ?
Merci

Cordialement

RV


















Avatar
isabelle
le click gauche sur l'icone Excel
cette CommandBars se nomme "System"


Application.CommandBars("System").Protection = msoBarNoProtection
Application.CommandBars("System").Enabled = False

isabelle


bonsoir,

excuse moi mais je ne comprends pas ce que tu veux me faire comprendre.
Quel rapport avec ce qui a été écrit précedemment ? avec le click gauche
sur l'icone Excel de la barre de commande Worksheet Menu Bar dont j'ai
fini par comprendre que c'était d'elle qu'il s'agissait, on obtient le
menu où l'on trouve "Restauration" and co.


A+



bonjour à tous,

les controls qui sont disponnible lors d'un click droit sur ce bouton
font partie de la barre "Document"
cette barre est protégé à l'origine mais il est posdsible d'enlever
cette protection.

Application.CommandBars("Document").Protection = msoBarNoProtection
Application.CommandBars("Document").Enabled = False

isabelle


non, effectivement je n'avais pas répondu à la bonne question. A ma
connaissance, aucun moyen .
au mieux, si je puis dire, tu peux invalider la barre des menus
complète.
ceci dit dans le menu de cette icone , que veux tu réellement empêcher ?

A+


Bonsoir JPS,

Peut-on au moins la griser afin de la rendre inutilisable :
Application.CommandBars(1).Controls(ID:= ?).Enabled = False par
exemple ?
Merci

Cordialement

RV


"jps" a écrit dans le message de
news:

j'avais cru comprendre que RV parlait de l'icône Excel A GAUCHE de
Fichier
dans la barre de menus ; AMHA, elle ne peut pas être rendue
invisible par





le

Application.CommandBars(1) etc.... car ce n'est pas un bouton





"manipulable"

comme Fichier Edition etc...
jps

"anonymousA" a écrit dans le message de
news:422381d3$0$19320$

bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance c'est
celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)






ainsi

'que l'icone en haut à gauche d'une application excel afin
d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu à
cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+


Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)







dans

la

barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>>






False

serait la bonne structure de code pour rendre cette icône
invisible ?
Merci

Cordialement

RV



















Avatar
anonymousA
effectivement, je suis très aveugle car je possède la bibilothèque
complète des commandbars et oui il y a le commandbar system qui permet
l'invalidation de l'icone en quetion et dont les ID sont

restauration 839
Dépla&cer 841
&Taille 842
Ré&duction 838
&Agrandissement 843
&Fermeture 840

J'étais resté sur l'affirmation de jps et je n'avais même pas pensé à
aller + loin.
me coucherais moins c.. ce soir.

A+


le click gauche sur l'icone Excel
cette CommandBars se nomme "System"


Application.CommandBars("System").Protection = msoBarNoProtection
Application.CommandBars("System").Enabled = False

isabelle


bonsoir,

excuse moi mais je ne comprends pas ce que tu veux me faire comprendre.
Quel rapport avec ce qui a été écrit précedemment ? avec le click
gauche sur l'icone Excel de la barre de commande Worksheet Menu Bar
dont j'ai fini par comprendre que c'était d'elle qu'il s'agissait, on
obtient le menu où l'on trouve "Restauration" and co.


A+



bonjour à tous,

les controls qui sont disponnible lors d'un click droit sur ce bouton
font partie de la barre "Document"
cette barre est protégé à l'origine mais il est posdsible d'enlever
cette protection.

Application.CommandBars("Document").Protection = msoBarNoProtection
Application.CommandBars("Document").Enabled = False

isabelle


non, effectivement je n'avais pas répondu à la bonne question. A ma
connaissance, aucun moyen .
au mieux, si je puis dire, tu peux invalider la barre des menus
complète.
ceci dit dans le menu de cette icone , que veux tu réellement
empêcher ?

A+


Bonsoir JPS,

Peut-on au moins la griser afin de la rendre inutilisable :
Application.CommandBars(1).Controls(ID:= ?).Enabled = False par
exemple ?
Merci

Cordialement

RV


"jps" a écrit dans le message de
news:

j'avais cru comprendre que RV parlait de l'icône Excel A GAUCHE de
Fichier
dans la barre de menus ; AMHA, elle ne peut pas être rendue
invisible par






le

Application.CommandBars(1) etc.... car ce n'est pas un bouton






"manipulable"

comme Fichier Edition etc...
jps

"anonymousA" a écrit dans le message de
news:422381d3$0$19320$

bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance
c'est celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)







ainsi

'que l'icone en haut à gauche d'une application excel afin
d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu
à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As
Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+


Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)








dans

la

barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>>>







False

serait la bonne structure de code pour rendre cette icône
invisible ?
Merci

Cordialement

RV





















Avatar
isabelle
après l'avoir mit à non disponnible (Enabled = False) tu peux la reprotéger,

msoBarNoChangeDock
msoBarNoChangeVisible
msoBarNoCustomize
msoBarNoHorizontalDock
msoBarNoMove
msoBarNoProtection
msoBarNoResize
msoBarNoVerticalDock

il y a plus d'information dans l'aide excel sous la rubrique :
Protection , propriété

isabelle

le click gauche sur l'icone Excel
cette CommandBars se nomme "System"


Application.CommandBars("System").Protection = msoBarNoProtection
Application.CommandBars("System").Enabled = False

isabelle


bonsoir,

excuse moi mais je ne comprends pas ce que tu veux me faire comprendre.
Quel rapport avec ce qui a été écrit précedemment ? avec le click
gauche sur l'icone Excel de la barre de commande Worksheet Menu Bar
dont j'ai fini par comprendre que c'était d'elle qu'il s'agissait, on
obtient le menu où l'on trouve "Restauration" and co.


A+



bonjour à tous,

les controls qui sont disponnible lors d'un click droit sur ce bouton
font partie de la barre "Document"
cette barre est protégé à l'origine mais il est posdsible d'enlever
cette protection.

Application.CommandBars("Document").Protection = msoBarNoProtection
Application.CommandBars("Document").Enabled = False

isabelle


non, effectivement je n'avais pas répondu à la bonne question. A ma
connaissance, aucun moyen .
au mieux, si je puis dire, tu peux invalider la barre des menus
complète.
ceci dit dans le menu de cette icone , que veux tu réellement
empêcher ?

A+


Bonsoir JPS,

Peut-on au moins la griser afin de la rendre inutilisable :
Application.CommandBars(1).Controls(ID:= ?).Enabled = False par
exemple ?
Merci

Cordialement

RV


"jps" a écrit dans le message de
news:

j'avais cru comprendre que RV parlait de l'icône Excel A GAUCHE de
Fichier
dans la barre de menus ; AMHA, elle ne peut pas être rendue
invisible par






le

Application.CommandBars(1) etc.... car ce n'est pas un bouton






"manipulable"

comme Fichier Edition etc...
jps

"anonymousA" a écrit dans le message de
news:422381d3$0$19320$

bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance
c'est celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)







ainsi

'que l'icone en haut à gauche d'une application excel afin
d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu
à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As
Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+


Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)








dans

la

barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>>>







False

serait la bonne structure de code pour rendre cette icône
invisible ?
Merci

Cordialement

RV





















Avatar
anonymousA
je te remercie , mais ca je sais faire. C'ets juste que j'ai omis de
regarder exhaustivement ma bibliothèque de commandbars d'autant que je
me suis fait blouser par le fait que on ne peut avoir plus de 1000
occurrences différentes dans un dropdown de filtre et comme j'utilise le
filtre pour rechercher les commandbarcontrols!!!!!

A+

après l'avoir mit à non disponnible (Enabled = False) tu peux la
reprotéger,

msoBarNoChangeDock
msoBarNoChangeVisible
msoBarNoCustomize
msoBarNoHorizontalDock
msoBarNoMove
msoBarNoProtection
msoBarNoResize
msoBarNoVerticalDock

il y a plus d'information dans l'aide excel sous la rubrique :
Protection , propriété

isabelle


le click gauche sur l'icone Excel
cette CommandBars se nomme "System"


Application.CommandBars("System").Protection = msoBarNoProtection
Application.CommandBars("System").Enabled = False

isabelle


bonsoir,

excuse moi mais je ne comprends pas ce que tu veux me faire comprendre.
Quel rapport avec ce qui a été écrit précedemment ? avec le click
gauche sur l'icone Excel de la barre de commande Worksheet Menu Bar
dont j'ai fini par comprendre que c'était d'elle qu'il s'agissait, on
obtient le menu où l'on trouve "Restauration" and co.


A+



bonjour à tous,

les controls qui sont disponnible lors d'un click droit sur ce
bouton font partie de la barre "Document"
cette barre est protégé à l'origine mais il est posdsible d'enlever
cette protection.

Application.CommandBars("Document").Protection = msoBarNoProtection
Application.CommandBars("Document").Enabled = False

isabelle


non, effectivement je n'avais pas répondu à la bonne question. A ma
connaissance, aucun moyen .
au mieux, si je puis dire, tu peux invalider la barre des menus
complète.
ceci dit dans le menu de cette icone , que veux tu réellement
empêcher ?

A+


Bonsoir JPS,

Peut-on au moins la griser afin de la rendre inutilisable :
Application.CommandBars(1).Controls(ID:= ?).Enabled = False par
exemple ?
Merci

Cordialement

RV


"jps" a écrit dans le message de
news:

j'avais cru comprendre que RV parlait de l'icône Excel A GAUCHE
de Fichier
dans la barre de menus ; AMHA, elle ne peut pas être rendue
invisible par







le

Application.CommandBars(1) etc.... car ce n'est pas un bouton







"manipulable"

comme Fichier Edition etc...
jps

"anonymousA" a écrit dans le message de
news:422381d3$0$19320$

bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance
c'est celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire,
restaurer,fermer)








ainsi

'que l'icone en haut à gauche d'une application excel afin
d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu
à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As
Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And
&HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+


Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X
d'Excel)









dans

la

barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>>>>








False

serait la bonne structure de code pour rendre cette icône
invisible ?
Merci

Cordialement

RV























Avatar
isabelle
et comme j'utilise le
filtre pour rechercher les commandbarcontrols!!!!!



tu t'es fait avoir par le filtre,
moi j'utilise presque toujours ctrl F en utilisant la fin des môts.
dans ce cas pour trouver Re&stauration,
j'ai recherché "ration" pour éviter les sigles $
a+
isabelle

Avatar
anonymousA
re,

voir le fil entre isabelle et moi-même.effectivement, sur une barre de
commandes dont MenuBar:=true, le fait d'invalider le commanbars
("system") empêche l'utilisation de l'icone. j'ai pas encore résolu les
icones de restauration and co à droite de la barre de commandes mais je
m'y mets incessamment.

A+


Bonsoir Isabelle,

Merci de la réponse.
Je m'excuse d 'insister mais n'y a t-il pas d'autre moyen que de déactiver
bouton par bouton?
En fait j'ai créé une barre de menu perso avec MenuBar:= True et cette icône
placée au même endroit offre d'autre choix comme restaurer réduire la
fenêtre...tout ce que je ne veux pas.
En revanche je veux concerver la réductuin de l'application.
Merci

Cordialement

Hervé



"isabelle" a écrit dans le message de
news:

bonjour RV,

ID Nom Local VBA name Control ID Control caption
219 Document Document 3 Enre&gistrer
748 En&registrer sous...
4 &Imprimer...
247 Mise en &page...
2 Or&thographe...
303 &Nouvelle fenêtre
298 &Réorganiser...
925 &Zoom...
1561 Visualiser le &code



isabelle


Bonsoir AnonymousA

En fait je me suis trompé, ce n'est pas à droite mais à gauche du menu
déroulant Fichier.(L'icône est juxtaposée à gauche de ce bouton



Fichiers)

Merci toutefois de ta réponse, je vais la garder, car jusqu' à présent



je

n'arrivais qu'à désactiver la croix de fermeture.
Aurais-tu quand même la réponse à ma question concernant cette icône?
Merci
Cordialement

RV


"anonymousA" a écrit dans le message de
news:422381d3$0$19320$


bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance c'est celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)




ainsi

'que l'icone en haut à gauche d'une application excel afin d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+



Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)





dans

la


barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible = False
serait la bonne structure de code pour rendre cette icône invisible ?
Merci

Cordialement

RV

















Avatar
anonymousA
ouais, c'est une bonne idée.

A+



et comme j'utilise le

filtre pour rechercher les commandbarcontrols!!!!!




tu t'es fait avoir par le filtre,
moi j'utilise presque toujours ctrl F en utilisant la fin des môts.
dans ce cas pour trouver Re&stauration,
j'ai recherché "ration" pour éviter les sigles $
a+
isabelle



Avatar
isabelle
voie sur ce lien, la réponse de notre chef à quatre plumes.

http://groups.google.com/groups?hl=fr&lr=&threadm:58B17E.788CEBA2%40free.fr&rnum=7&prev=/groups%3Fq%3DVerrouiller%2BExcel%2Bgroup:microsoft.public.fr.excel%2Bauthor:Laurent%2Bauthor:Longre%26hl%3Dfr%26lr%3D%26scoring%3Dd%26selm%3D3A58B17E.788CEBA2%2540free.fr%26rnum%3D7

isabelle

re,

voir le fil entre isabelle et moi-même.effectivement, sur une barre de
commandes dont MenuBar:=true, le fait d'invalider le commanbars
("system") empêche l'utilisation de l'icone. j'ai pas encore résolu les
icones de restauration and co à droite de la barre de commandes mais je
m'y mets incessamment.

A+



Bonsoir Isabelle,

Merci de la réponse.
Je m'excuse d 'insister mais n'y a t-il pas d'autre moyen que de
déactiver
bouton par bouton?
En fait j'ai créé une barre de menu perso avec MenuBar:= True et cette
icône
placée au même endroit offre d'autre choix comme restaurer réduire la
fenêtre...tout ce que je ne veux pas.
En revanche je veux concerver la réductuin de l'application.
Merci

Cordialement

Hervé



"isabelle" a écrit dans le message de
news:

bonjour RV,

ID Nom Local VBA name Control ID Control caption
219 Document Document 3 Enre&gistrer
748 En&registrer sous...
4 &Imprimer...
247 Mise en &page...
2 Or&thographe...
303 &Nouvelle fenêtre
298 &Réorganiser...
925 &Zoom...
1561 Visualiser le &code



isabelle


Bonsoir AnonymousA

En fait je me suis trompé, ce n'est pas à droite mais à gauche du menu
déroulant Fichier.(L'icône est juxtaposée à gauche de ce bouton




Fichiers)

Merci toutefois de ta réponse, je vais la garder, car jusqu' à présent




je

n'arrivais qu'à désactiver la croix de fermeture.
Aurais-tu quand même la réponse à ma question concernant cette icône?
Merci
Cordialement

RV


"anonymousA" a écrit dans le message de
news:422381d3$0$19320$


bonsoir

de quel controle parles-tu. Le seul X donnt j'ai connissance c'est
celui
qui permet de fermer le fichier ou l'application.
Pour les invaliser, 2 exemples de procédure

Attribute VB_Name = "DesactiverIconesFenetreExcel"

'Comment peut on desactiver les 3 icones (réduire, restaurer,fermer)





ainsi

'que l'icone en haut à gauche d'une application excel afin d'empêcher
'l'utilisateur de fermer Excel autrement que par un bouton prévu à cet
effet ?

'Dans le module ThisWorkbook de l'application :
'(Laurent Longre)
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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 Sub Workbook_BeforeClose(Cancel As Boolean)
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
hwnd = FindWindowA(vbNullString, Application.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

ou/et

Attribute VB_Name = "DesactiverMenuSystemeXL"

'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

Je ne sais pas si j'ai répondu à ta question.

A+



Bonsoir à tous,

Je cherche à rendre non visible l'icône (Feuille avec le X d'Excel)






dans

la


barre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible =
False
serait la bonne structure de code pour rendre cette icône invisible ?
Merci

Cordialement

RV



















1 2