Supprimer le bouton de fermeture d'un formulaire

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai trouvé sur le net un moyen de supprimer le bouton de fermeture qui se trouve dans la barre de titre d'un USF.
Ça marche très bien.
Cependant, quand on´veut mettre un libellé dans la barre de titre, ça ne marche plus.
Je reconnais que c'est plutôt technique.

Ma foi, si quelqu'un peut me donner un coup de main pour résoudre ce problème, si c'est possible...

Bonne soirée à tous
 

Pièces jointes

  • Bouton Fermer.xls
    58 KB · Affichages: 89

laetitia90

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

bonsoir magic
a mon avis le plus simple c'est gerer cette croix ???

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, x As Integer)
     If x = vbFormControlMenu Then MsgBox "un bouton est prevu pour cela....": Cancel = 1
End Sub
 

Magic_Doctor

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

Bonsoir laetitia, tototi, et les autres,

Ce que je voulais, laetitia, c'est que cette petite croix ne soit plus visible sur la barra de titre de l'USF.
Pour y arriver il faut manifestement jongler avec les APIs ; il ne semble pas y avoir d'autres moyens.

tototiti, quand j'écris :
VB:
Private Sub UserForm_Initialize()

Dim B As Boolean
B = ShowCloseButton(UF:=Me, HideButton:=True)

End Sub
j'ouvre l'USF et, magie ! le bouton de fermeture a disparu.
Maintenant, je rajoute une sentence dans la barre de titre normalement débarrassée de son bouton de fermeture :
VB:
Private Sub UserForm_Initialize()

Dim B As Boolean
B = ShowCloseButton(UF:=Me, HideButton:=True)

Me.Caption = "J'aime pas les rhododendrons"

End Sub
et là réapparaît le bouton de fermeture après la sentence. C'est curieux, il y a comme une interférence.
Peut-être que la combinaison des 2 est impossible.
En tout cas, modifier le look d'un USF, même si ce n'est que pour le fun, c'est pas toujours gagné !
 

laetitia90

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

re,bonjour tototiti2008 :)

l'ami toto:) a raison si tu le met directement dans propriétes cela marche & non pas dans initialise

un exemple avec un code plus court
 

Pièces jointes

  • croix.xls
    37.5 KB · Affichages: 123
  • croix.xls
    37.5 KB · Affichages: 75

Modeste

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

Bonjour Magic_Doctor,
Salut Laetitia :):):)
Môôôssieur tototiti :D

Pour ce que ça vaut ... en reprenant le code initial et en faisant glisser la ligne du ShowButton après la définition du Caption, ça semble fonctionner aussi (sous XL 2013)

[Edit:] idem avec le code de Laetitia
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

Salut

...
En tout cas, modifier le look d'un USF, même si ce n'est que pour le fun, c'est pas toujours gagné !
Pour le fun, BINGO !

Avec le code classique de Laetitia :D (préféré à celui d'Yves) et le conseil de Modeste ;)
Code:
Private Declare Function GetWindowLongA& Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long)
Private Declare Function SetWindowLongA& Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long)
Private Declare Function FindWindowA& Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String)
Dim T$, n As Byte
Private Sub UserForm_Initialize()
   T = " ni les épines ..."
   cache
End Sub
Private Sub C2_Click()
  n = n + 1
  Me.Caption = Me.Caption & T
  cache
  T = " encore moins les soucis ...": C2.Caption = " ... encore une fois"
  C2.Visible = n < 2
End Sub
Sub cache()
  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
End Sub
Private Sub C1_Click()
  Unload Me
End Sub
 

Pièces jointes

  • Pas de croix ni bannière.xls
    39.5 KB · Affichages: 102

Magic_Doctor

XLDnaute Barbatruc
Re : Supprimer le bouton de fermeture d'un formulaire

Bonsoir,

Un grand merci à tous, maintenant ça marche très bien.
Je reviendrai sur ce fil avec le résultat final, mais il me manque encore quelques détails.

Bravo laetitia, ça, ça en jette !

PS : apagón mais c'était passé
 

Discussions similaires