Désactiver la barre de titre d'un userform 64bits

Bonjour Tout le monde,

j'ai un code qui supprime la barre de titre des userform mais il ne marche pas dans la version 64bits

Merci pour toute aide.

Bonjour Akhiba

Le code pour versions 32 et 64 bits

Option Explicit

#If VBA7 Then
  Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias _
  "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) 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 DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
#Else
  Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Private Declare Function GetWindowLong Lib "user32" Alias _
  "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) 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 DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
#End If

Private Sub UserForm_Initialize()
  Dim hWnd As Long, Style As Long
  hWnd = FindWindow(vbNullString, Me.Caption)
  Style = GetWindowLong(hWnd, -16) And Not &HC00000
  SetWindowLong hWnd, -16, Style
  DrawMenuBar hWnd
End Sub

Mais attention, ce code peut être dangereux si on ne sait pas que ALT+F4 peut fermer l'USF en question

@+

Bonjour et merci akhiba pour le cross posting et le remerciement que l'on a ici

Bonjour Bruno,

Merci pour le code c'est juste génial

Par contre aurais-tu une idée pour modifier la bordure une fois que c'est fait ? J'ai une bordure grise que j'aurai bien aimé changer. J'ai essayé avec BorderColor mais sans succès...

capture d ecran 2022 11 30 224134

Bonjour,

Attention, pour la conversion en 64 bits, toutes les variables d'adresse (pointeur) doivent être déclarées en LongPtr

#If VBA7 Then
  Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
  Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias _
  "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
  Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPtr
  Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hWnd As LongPtr) As LongPtr
Rechercher des sujets similaires à "desactiver barre titre userform 64bits"