Réduire UserForm sans le bouton croix

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 !

bonjour,

Ne t"'amuse donc pas à te compliquer la vie : Au lieu de supprimer la croix inhibe là !

A+

175closemode.xlsm (19.20 Ko)

Salut galopin01 et merci !

Je ne connaissais pas du tout cette technique et en faisant quelques recherches il s'avère qu'elle est assez utilisée. Je n'avais pas pensé à juste l'inhiber !

Je garde cette astuce sous la main mais si jamais quelqu'un à la solution pour juste supprimer la croix, je prend !

galopin01, ta solution est-elle faisable pour empêcher d'agrandir le formulaire ?

Merci encore !

Vire tous ces boutons et utilise un UserForm traditionnel !

Rechercher des sujets similaires à "reduire userform bouton croix"