Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Userform sans entete

3 réponses
Avatar
amydale
Bonjour a tous,

je voudrais avoir un userform mais sans l'entete ( la barre en haut ou il y
a le caption et le "X" a droite)

Il me semble avoir croisé une fois un bout de code pour pouvoir le supprimer
mais impossible de mettre la main dessus !
Merci

Sébastien

3 réponses

Avatar
Hervé
Salut,
A mettre dans le module de ta Form, attention à faire en sorte de pouvoir la
fermer, ici, sur Click de la Form :

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

Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function DrawMenuBar _
Lib "user32" ( _
ByVal hWnd As Long) As Long

Private Declare Function EnableWindow _
Lib "user32" ( _
ByVal hWnd As Long, _
ByVal fEnable As Long) As Long

Private Sub UserForm_Initialize()
Dim Poignée As Long
Poignée = FindWindow(vbNullString, Me.Caption)
SetWindowLong Poignée, -16, _
GetWindowLong(Poignée, -16) _
And -12582912
DrawMenuBar Poignée
End Sub

Private Sub UserForm_Activate()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub

Private Sub UserForm_Click()
Unload Me
End Sub

Hervé.

"amydale" a écrit dans le message
news:
Bonjour a tous,

je voudrais avoir un userform mais sans l'entete ( la barre en haut ou il
y

a le caption et le "X" a droite)

Il me semble avoir croisé une fois un bout de code pour pouvoir le
supprimer

mais impossible de mettre la main dessus !
Merci

Sébastien




Avatar
anonymousA
bonsoir,

1) supprimer la croix.

mettre dans la section déclarations du code du Userform la déclaration des API

'déclarations API nécessaires pour empêcher l'affichage de la
'croix de fermeture du userform

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 dwNewLong As Long) As Long

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

puis dans la proc d'initialisation du userfom mettre

Private Sub UserForm_Initialize()

'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module

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

'ici mettre le code que tu veux

End Sub

2) supprimer le texte d'entete

pour ca, juste effacer ce qu'il y a dans la propiété Caption du userform. tu
peux le faire à la main ou par programmation à l'initialize , c'est comme tu
veux.

A+


Bonjour a tous,

je voudrais avoir un userform mais sans l'entete ( la barre en haut ou il y
a le caption et le "X" a droite)

Il me semble avoir croisé une fois un bout de code pour pouvoir le supprimer
mais impossible de mettre la main dessus !
Merci

Sébastien





Avatar
isabelle
bonjour Sébastien,

Voir sur le lien Objets VBA
http://perso.wanadoo.fr/frederic.sigonneau/

isabelle


Bonjour a tous,

je voudrais avoir un userform mais sans l'entete ( la barre en haut ou il y
a le caption et le "X" a droite)

Il me semble avoir croisé une fois un bout de code pour pouvoir le supprimer
mais impossible de mettre la main dessus !
Merci

Sébastien