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

10 réponses

1 2
Avatar
anonymousA
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
RV
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
jps
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
RV
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
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
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
RV
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
RV
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
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
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

















1 2