Bonjour à tous,
J'aimerai avoir un UserForm que l'on peut réduire ou augmenter à souhait. J'ai donc fouillé sur le net et j'ai trouvé un code pour afficher ces boutons, qui marche nickel chrome (aluminium).
Mais, première complication, j'avais déjà auparavant un code qui me permettait de supprimer la croix, car je veux forcer l'utilisateur à cliquer sur un bouton pour fermer l'UF, et donc ce code me cache ces boutons pour réduire et augmenter l'UF. Je dois donc commenter ce code pour pouvoir avoir les boutons qui s'affichent, mais alors la croix est présente.
J'aimerais donc pouvoir masquer ou supprimer ce bouton "croix", mais j'avoue que c'est un code plus complexe que d'habitude et je ne sait pas trop comment le modifier pour arriver à mes fins.
J'aimerais aussi si possible, masquer ou supprimer le bouton qui affiche en l'UF en plein écran.
Voici mes codes :
Module pour supprimer la croix :
Option Explicit
Declare PtrSafe Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare PtrSafe Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Declare PtrSafe Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub OteCroix(UF As UserForm)
Dim hWnd As Long
'Enlève la croix rouge de l'UF
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
& "Frame", UF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
Module pour ajouter les boutons :
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE As Long = (-16) 'The offset of a window's style
Private hWnd, IStyle
Public Sub AjoutBtn(F As Object)
hWnd = FindWindow(vbNullString, F.Caption)
IStyle = GetWindowLong(hWnd, GWL_STYLE) Or &H70000
SetWindowLong hWnd, GWL_STYLE, IStyle
End Sub
Dans l'Initialize de l'UF :
'On appelle la macro AjoutBtn
AjoutBtn Me
'On appelle la macro OteCroix
OteCroix Me
Un grand merci d'avance à ceux qui tenterons de m'aider !