OVH Cloud OVH Cloud

Bouton actif sur plusieurs onglets

3 réponses
Avatar
ThierryP
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 :-))

3 réponses

Avatar
PatLry
Bonjour,

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 :-))


Avatar
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

Private Const WS_EX_APPWINDOW = &H40000
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)

Private Const SW_HIDE = 0
Private Const SW_NORMAL = 1

Private Const WM_SETICON = &H80


Private Sub UserForm_Activate()

Dim wLong&, hwnd&, hIcon&, IcoPath As String

'* 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

SetWindowLongA hwnd, GWL_STYLE, wLong
ShowWindow hwnd, 0 'SW_NORMAL '* Afficher la fenêtre

"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 :-))


Avatar
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 :-))