Bonjour,
Je souhaiterais cacher le 'closebutton' d'un userForm classique. En .NET c'est juste une propriété à changer mais en vba je ne connais pas la solution à mon problème. Merci de bien vouloir m'aider.
Bonjour,
Je souhaiterais cacher le 'closebutton' d'un userForm classique. En .NET c'est juste une propriété à changer mais en vba je ne connais pas la solution à mon problème. Merci de bien vouloir m'aider.
c'est quoi pour toi un userform classique.. un userform c'est une form utilisateur .... le bouton closebutton ..? c'est quoi?
Je ne sais pas le fermer mais je sais le rendre inactif
où GetOut est un boolean déclaré en Public, qui permet aux seuls users "autorisés" de fermer par la croix
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If Not GetOut Then MsgBox "Pour plus de sécurité, utiliser l'une des deux " + """portes de sortie""" + " pour quitter l'application", 64, "Sortie condamnée" Cancel = True endif End Sub
tu peu t'inspirer de la FAQ VBA access :
Empêcher la fermeture d'un formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) MsgBox "Fermeture impossible" Cancel = True End Sub
en un peu plus simple :
Pardon ousk
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True End Sub![]()
Ok bien noté.
Si je comprend bien ce n'est pas possible même en jouant avec le style de la bordure on est d'accord ?
merci
il existe une solution en VB6, mais qui ne fonctionne pas en VBA (ce c*n de VBA, pardon aux puristes, ne connait pas la propriété hWnd, nécessaire à la plupart des fonctions de l'API Windows)
Donc, à priori, (sauf si un mega-balèze en VBA connait la solution et me fait mentir), je ne vois pas d'autre issue![]()
en utilisant FindWindowA pour trouver le handle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName _ As String) As Long Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If End Sub
Et tu pouvais pas le dire avant, sacrebleu !!Envoyé par bbil
(je suis vraiment trop c*n de ne pas y avoir penser
)
petit message si je peux me permettre : Il ne faut jamais se dévaloriser !Envoyé par ThierryAIM
![]()
T'inquietes, je n'en suis pas ça près, et je sais reconnaitre quans je me goureEnvoyé par boux2
![]()
Mais Merci quand même![]()
Partager