[UserForm P1] Oter la croix rouge

Il est parfois intéressant de supprimer la possibilité de sortir d'un userform tant que toutes les entrées n'ont pas été saisies, mais il reste toujours la croix qui autorise l'utilisateur à sortir.

Le code ci-dessous permet d'oter cette croix.

Voir une démo générale sur ce tuto.

Dans un module général (Module1 par exemple) coller le code ci-dessous.

Option Explicit

'pour enlever la croix rouge d'un UF
 Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

 Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

 Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Sub OteCroix(Caption As String)
Dim hwnd As Long
    hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
    & "Frame", Caption)
    SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

Et dans un UserForm..

Private Sub UserForm_Initialize()
    OteCroix Me.Caption
End Sub

Bonjour,

Merci pour le code que tu offres a la communauté :p

Si tu me le permet, à mon sens, enlever la croix rouge est pratique pour des aspects graphiques et c'est ainsi que je vais l'utiliser. Merci

Pour empecher les gens de quitter un formulaire : il y a cette solution :

UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Le principe étant de mettre des conditions type SI et qui donneront une valeur a la variable cancel pour empecher de sortir.

Rechercher des sujets similaires à "userform oter croix rouge"