tu peux intégrer une barre d'outils pour l'ensemble du classeur, même avec un seul bouton. voir http://www.excelabo.net/xl/barres.php#exemplebo
Pat "ThierryP" a écrit dans le message de news:
Bonjour tout le monde !
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!
@+thierryp :-))
Emcy
les seuls moyens que je connaissent sont : 1- tu crée pluton un bouton dans une barre d'outils
2- tu crée en VBA un Userfrom ou tu mets ton bouton dedans mets ceci pour pouvoir mieux naviguer
Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) 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 wNewWord As Long) As Long Private Declare Function SendMessageA Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long Private Declare Function ExtractIconA Lib "shell32.dll" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex 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 GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_CLOSE As Long = &HF060 '* Close menu item Private Const WS_MAXIMIZEBOX = &H10000 '* Maximise Private Const WS_MINIMIZEBOX = &H20000 '* Minimise Private Const WS_THICKFRAME = &H40000 Private Const WS_SIZEBOX = WS_THICKFRAME '* Taille ajustable
'* Handle de la fenêtre hwnd = GetActiveWindow '-> Obligatoirement
hwnd = FindWindowA(vbNullString, Me.Caption) '-> Possible avec EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub
Sub UserForm_Initialize()
Dim IcoPath As String Dim hIcon As Variant Dim hwnd As Variant Dim wLong As Variant
'* Chemin complet de l'icone IcoPath = ThisWorkbook.Path & "icone.ico" If Dir(IcoPath) = "" Then hIcon = 0 Else hIcon = ExtractIconA(0, IcoPath, 0)
hwnd = FindWindowA(vbNullString, Me.Caption)
ShowWindow hwnd, SW_HIDE '* Masquer la fenêtre wLong = GetWindowLongA(hwnd, GWL_EXSTYLE) '* Réduction dans l'application -> Inactiver la ligne suivante '* Réduction dans la barre de tâches -> Activer la ligne suivante wLong = wLong Or WS_EX_APPWINDOW SetWindowLongA hwnd, GWL_EXSTYLE, wLong
'* Installation de l'icone SendMessageA hwnd, WM_SETICON, False, hIcon
'* Inhiber la croix de fermeture -> Activer la ligne suivante 'DeleteMenu GetSystemMenu(hwnd, 0), SC_CLOSE, 0&
'* add minimize, maximize and size wLong = GetWindowLongA(hwnd, GWL_STYLE) '* Choix possibles : wLong = wLong Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX Or WS_SIZEBOX 'wLong = wLong Or WS_MAXIMIZEBOX 'WS_MINIMIZEBOX wLong = wLong Or WS_MINIMIZEBOX
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!
@+thierryp :-))
les seuls moyens que je connaissent sont :
1- tu crée pluton un bouton dans une barre d'outils
2- tu crée en VBA un Userfrom ou tu mets ton bouton dedans
mets ceci pour pouvoir mieux naviguer
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As
String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal
nCmdShow As Long) 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 wNewWord As Long) As Long
Private Declare Function SendMessageA Lib "user32" (ByVal hwnd As Long,
ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Declare Function ExtractIconA Lib "shell32.dll" (ByVal hInst As
Long, ByVal lpszExeFileName As String, ByVal nIconIndex 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 GetSystemMenu Lib "user32" (ByVal hwnd As Long,
ByVal bRevert As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long,
ByVal fEnable As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long)
As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As
Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal
nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_CLOSE As Long = &HF060 '* Close menu item
Private Const WS_MAXIMIZEBOX = &H10000 '* Maximise
Private Const WS_MINIMIZEBOX = &H20000 '* Minimise
Private Const WS_THICKFRAME = &H40000
Private Const WS_SIZEBOX = WS_THICKFRAME '* Taille ajustable
'* Handle de la fenêtre
hwnd = GetActiveWindow '-> Obligatoirement
hwnd = FindWindowA(vbNullString, Me.Caption) '-> Possible avec
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub
Sub UserForm_Initialize()
Dim IcoPath As String
Dim hIcon As Variant
Dim hwnd As Variant
Dim wLong As Variant
'* Chemin complet de l'icone
IcoPath = ThisWorkbook.Path & "icone.ico"
If Dir(IcoPath) = "" Then hIcon = 0 Else hIcon = ExtractIconA(0, IcoPath,
0)
hwnd = FindWindowA(vbNullString, Me.Caption)
ShowWindow hwnd, SW_HIDE '* Masquer la fenêtre
wLong = GetWindowLongA(hwnd, GWL_EXSTYLE)
'* Réduction dans l'application -> Inactiver la ligne suivante
'* Réduction dans la barre de tâches -> Activer la ligne suivante
wLong = wLong Or WS_EX_APPWINDOW
SetWindowLongA hwnd, GWL_EXSTYLE, wLong
'* Installation de l'icone
SendMessageA hwnd, WM_SETICON, False, hIcon
'* Inhiber la croix de fermeture -> Activer la ligne suivante
'DeleteMenu GetSystemMenu(hwnd, 0), SC_CLOSE, 0&
'* add minimize, maximize and size
wLong = GetWindowLongA(hwnd, GWL_STYLE)
'* Choix possibles : wLong = wLong Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX Or
WS_SIZEBOX
'wLong = wLong Or WS_MAXIMIZEBOX 'WS_MINIMIZEBOX
wLong = wLong Or WS_MINIMIZEBOX
les seuls moyens que je connaissent sont : 1- tu crée pluton un bouton dans une barre d'outils
2- tu crée en VBA un Userfrom ou tu mets ton bouton dedans mets ceci pour pouvoir mieux naviguer
Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) 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 wNewWord As Long) As Long Private Declare Function SendMessageA Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long Private Declare Function ExtractIconA Lib "shell32.dll" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex 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 GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_CLOSE As Long = &HF060 '* Close menu item Private Const WS_MAXIMIZEBOX = &H10000 '* Maximise Private Const WS_MINIMIZEBOX = &H20000 '* Minimise Private Const WS_THICKFRAME = &H40000 Private Const WS_SIZEBOX = WS_THICKFRAME '* Taille ajustable
'* Handle de la fenêtre hwnd = GetActiveWindow '-> Obligatoirement
hwnd = FindWindowA(vbNullString, Me.Caption) '-> Possible avec EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub
Sub UserForm_Initialize()
Dim IcoPath As String Dim hIcon As Variant Dim hwnd As Variant Dim wLong As Variant
'* Chemin complet de l'icone IcoPath = ThisWorkbook.Path & "icone.ico" If Dir(IcoPath) = "" Then hIcon = 0 Else hIcon = ExtractIconA(0, IcoPath, 0)
hwnd = FindWindowA(vbNullString, Me.Caption)
ShowWindow hwnd, SW_HIDE '* Masquer la fenêtre wLong = GetWindowLongA(hwnd, GWL_EXSTYLE) '* Réduction dans l'application -> Inactiver la ligne suivante '* Réduction dans la barre de tâches -> Activer la ligne suivante wLong = wLong Or WS_EX_APPWINDOW SetWindowLongA hwnd, GWL_EXSTYLE, wLong
'* Installation de l'icone SendMessageA hwnd, WM_SETICON, False, hIcon
'* Inhiber la croix de fermeture -> Activer la ligne suivante 'DeleteMenu GetSystemMenu(hwnd, 0), SC_CLOSE, 0&
'* add minimize, maximize and size wLong = GetWindowLongA(hwnd, GWL_STYLE) '* Choix possibles : wLong = wLong Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX Or WS_SIZEBOX 'wLong = wLong Or WS_MAXIMIZEBOX 'WS_MINIMIZEBOX wLong = wLong Or WS_MINIMIZEBOX
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!
@+thierryp :-))
ThierryP
Merci à tous les deux pour vos réponses aussi rapides que pertinentes !! Evidemment, la solution de PatLry me crevait les yeux, mais j'étais fixé sur mon commandbutton !! Je la préfère à celle de Emcy, tout simplement parce que je ne comprends pas la moitié du code...:-) et donc, si ça plante, je vais casser les pieds à tout le monde et thierryp n'est pas le nouveau pseudo de Rick :-))))))))))
Merci beaucoup
Bonjour tout le monde !
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!
@+thierryp :-))
Merci à tous les deux pour vos réponses aussi rapides que pertinentes !!
Evidemment, la solution de PatLry me crevait les yeux, mais j'étais fixé
sur mon commandbutton !!
Je la préfère à celle de Emcy, tout simplement parce que je ne comprends
pas la moitié du code...:-) et donc, si ça plante, je vais casser les
pieds à tout le monde et thierryp n'est pas le nouveau pseudo de Rick
:-))))))))))
Merci beaucoup
Bonjour tout le monde !
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen
de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!
Merci à tous les deux pour vos réponses aussi rapides que pertinentes !! Evidemment, la solution de PatLry me crevait les yeux, mais j'étais fixé sur mon commandbutton !! Je la préfère à celle de Emcy, tout simplement parce que je ne comprends pas la moitié du code...:-) et donc, si ça plante, je vais casser les pieds à tout le monde et thierryp n'est pas le nouveau pseudo de Rick :-))))))))))
Merci beaucoup
Bonjour tout le monde !
Afin de ne pas surcharger le code, je voudrais savoir s'il y a un moyen de rendre un bouton (commandbutton) indépendant de la feuille active ???
Merci d'avance pour toutes les pistes que vous pourrez me proposer !!