Microsoft 365 Ne pas afficher l'entête de l'UserForm

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite un beau WE :)

Voilà des mois que je cherche et je ne trouve pas comment faire pour Ne pas afficher l'entête d'un UserForm
Pour la Combobox, grâce à Job75, c'est résolu (encore merci:))
photo ci dessous :
1598710799239.png


Mais pour l'UserForm, c'est une autre histoire et peut-être pas possible ???
Pour ne pas donner d'explications qui risquent de ne pas être claires, je joins un fichier test.
Auriez-vous la solution ?
Avec mes remerciements,
Amicalement,
lionel,
 

Pièces jointes

  • UserForm_testUF.xlsm
    110.7 KB · Affichages: 22

soan

XLDnaute Barbatruc
Inactif
Bonjour lionel,

Voilà, il suffisait d'effacer le champ Caption.

J'ai mis en commentaire ce qui bloque la compilation sur mon PC :
c'est à dire ce qui concerne le 64 bits avec PtrSafe.

soan
 

Pièces jointes

  • UserForm_testUF.xlsm
    106.8 KB · Affichages: 9
Dernière édition:

Dudu2

XLDnaute Barbatruc
Je ne vois pas trop l'utilité de dézinguer la barre de titre du UserForm mais parfois ça fait plaisir de le faire quand même :p et ça vaut mieux que de manger trop de chocolats.
Ce fichier illustre la mise en œuvre du lien cité ci-dessus.
 

Pièces jointes

  • VBA Supprimer la barre de titre UserForm API.xlsm
    50.9 KB · Affichages: 19

Dudu2

XLDnaute Barbatruc
Reprends le fichier du Post #4 que je viens de modifier en reportant toutes les déclarations API dans un module dédié Module_APIWindows que j'utilise maintenant pour éviter d'avoir à me prendre la tête sur les déclarations de l'API pour les fonctions les plus couramment utilisées et qui évolue au fil du temps lorsqu'il faut ajouter 1 ou 2 fonctions ce qui est le cas ici.

Donc remplace le Module_APIWindows du fichier de l'Agenda Google par celui fichier du Post #4.
Et pour le code du UserForm incluant la fonction de suppression de la barre de titre, plus besoin des déclarations. Ce seul code suffit (comme dans le fichier du Post #4).
VB:
'https://www.teachexcel.com/excel-tutorial/2026/removing-the-title-bar-from-a-userform

Sub HideBar(frm As Object)
    Dim Style As Long, Menu As Long, hWndForm As Long
  
    'une classe de UserForm est de type ThunderXFrame ou ThunderDFrame (selon version)
    hWndForm = FindWindow("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption)
    Style = GetWindowLong(hWndForm, GWL_STYLE)
    Style = Style And Not WS_CAPTION
    SetWindowLong hWndForm, GWL_STYLE, Style
    DrawMenuBar hWndForm

End Sub

Private Sub UserForm_Initialize()
    HideBar Me
End Sub
 

Dudu2

XLDnaute Barbatruc
C'est un problème de déclaration des API entre version 32 et 64 bits d'Office
Oui car Long et LongPtr qui ne s'aiment pas en 64 bits.
Reprends le fichier et dis si ça marche cette fois.

MS dit: https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/longptr-data-type
LongPtr n’est pas un véritable type de données, car il est converti en Long dans les environnements 32 bits, ou en LongLong dans les environnements 64 bits. L’utilisation de LongPtr permet d’écrire du code portable exécutable à la fois dans les environnements 32 bits et 64 bits. Utilisez LongPtr pour les pointeurs et les handles.
 

Discussions similaires