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
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
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
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
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
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
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
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
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
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
labarre 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
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
labarre 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
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
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" <pensez@liege.be> a écrit dans le message de
news:uGumuedHFHA.3472@TK2MSFTNGP09.phx.gbl...
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
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
labarre 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
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
labarre 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
bonjour RV,
ID Nom Local VBA name Control ID Control caption
219 Document Document 3 Enre&gistrer
748 En®istrer sous...
4 &Imprimer...
247 Mise en &page...
2 Or&thographe...
303 &Nouvelle fenêtre
298 &Réorganiser...
925 &Zoom...
1561 Visualiser le &code
isabelleBonsoir 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
labarre 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
bonjour RV,
ID Nom Local VBA name Control ID Control caption
219 Document Document 3 Enre&gistrer
748 En®istrer 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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
bonjour RV,
ID Nom Local VBA name Control ID Control caption
219 Document Document 3 Enre&gistrer
748 En®istrer sous...
4 &Imprimer...
247 Mise en &page...
2 Or&thographe...
303 &Nouvelle fenêtre
298 &Réorganiser...
925 &Zoom...
1561 Visualiser le &code
isabelleBonsoir 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
labarre 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
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible > >
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV
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" <pensez@liege.be> a écrit dans le message de
news:uGumuedHFHA.3472@TK2MSFTNGP09.phx.gbl...
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible > >
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV
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" <pensez@liege.be> a écrit dans le message de
news:uGumuedHFHA.3472@TK2MSFTNGP09.phx.gbl...
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV
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
isabellenon, 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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV
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" <pensez@liege.be> a écrit dans le message de
news:uGumuedHFHA.3472@TK2MSFTNGP09.phx.gbl...
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" <anonymousA@wanadoo.fr> a écrit dans le message de
news:422381d3$0$19320$8fcfb975@news.wanadoo.fr...
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
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
isabellenon, 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
leApplication.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)
danslabarre de menu à droite du menu fichier.
Je ne connai pas son n° ID.
Est-ce que: Application.CommandBars(1).Controls(ID:= ?).Visible >>>
Falseserait la bonne structure de code pour rendre cette icône invisible ?
Merci
Cordialement
RV