Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tjr sur combobox, dsl

M

Manu70

Guest
Re bonjour tous le monde,

J'ai oublié de demandé qqc dans mon precedent post :

Peut-on enlevé la croix rouge de fermeture sur une combobox ?

Merci d'avance
 
J

Jacques

Guest
Salut Manu70,

Pour enlever la croix rouge je ne crois pas, pour ça je laisse les tenors d'XLD te répondre, en attendant j'ai trouvé un post il y a pas si longtemps qui permettait de le désactiver :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu Then Cancel = True

End Sub

C'était pour un Userform, pour les combobx ça doit être pareil, je ne connais pas trop.
Espérant t'avoir aidé, je te souhaite bon courage.

@ plus

Jacques
 
M

Manu70

Guest
Salut Jacques,

J'ai mis en application ta formule qui est efficace, j'aurais preferé ne pas avoir la croix, mais bon, c'est deja bien.

Te remercie pour le tuyau

Bonne fin de WK

Manu70
 
E

Eric C

Guest
Bonjour le forum
Bonjour Manu70, bonjour Jacques


Ci-dessous le code mis en ligne sur le forum par notre zami Thierry (que je salue au passage) & qui répond à ta demande :

// Empêcher déplacement du USF et la fermeture par la croix

Grâce à ce code placé dans le private module du UserForm, tu obtiendras l'impossibilité de déplacement du UserForm en question ainsi que l'impossibilité de le fermer avec la croix. (Attention prévoir un bouton de sortie ...)

Ce code vient du MPFE, je pense Laurent Longre ou Frederic Sigonneau, et je l'utilise souvent quand je veux "canaliser" les users...


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

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 Sub UserForm_Activate()
Dim hWnd As Long, exLong As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
exLong = GetWindowLongA(hWnd, -16)
If exLong And &H880000 Then
SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
Me.Hide: Me.Show
End If
End Sub


Bon dimanche à toutes & à tous

@ + Eric C
 
J

jean Comte

Guest
Bonsoir a tout le monde,

Salut manu70

J'ai trouvé cela sur le forum et cela marche très bien, plus de croix mais comme dis éric c, prévoir un bouton de sortie

'pasdecroix me' a mettre dans le userform_initialize

Option Private Module
Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'Moyen de ne pas avoir la CROIX DE FERMETURE sur les UserForms
'de Flo avec les conseils de Denis Michon et de Frédéric Sigonneau (MPFE)
'=========================================================================

Sub PasDeCroix(USF As UserForm)
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
'Remarque :
'==========
'Je ne sais pas si celà va fonctionner sur XP !! (Thierry)
'faites moi savoir au cas où


Cela fonctionne aussi sur XP

jean
 
P

Papy Novice

Guest
Bonsoir Jacques, Léa, et l'ensemble du forum.
Voulez-vous regarder le code ci-dessous; moi je n'y comprends rien mais je suis certain que vous ca vous comblere (peut-être)

Attribute VB_Name = "CroixFermetureUserForm"

'Supprimer la croix de fermeture d'un UserForm
'A placer au début du module de code de ton UserForm :
'L Longre, mpfe

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

Private Sub UserForm_Initialize()
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

En souhaitant à tout un chacun une excellente Saint Valentin, et en vous disant MERCI.
JEan
 
P

Papy Novice

Guest
Coucou, re bonsoir,
Voici un autre code que je viens de copier :
de FrédéricSigonneau

Attribute VB_Name = "UserFormSansCroixFermeture"

'lancer un UserForm avec sa croix de fermeture désactivée
'Tom Ogilvy

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long
Declare Function GetActiveWindow Lib "user32" () As Long

Private Const SC_CLOSE As Long = &HF060
Private Const SW_SHOW As Long = 5
Private Const WM_SETICON = &H80

Sub CloseBthDisabled()
'à appeler dans l'événement Initialize du UserForm
Dim hWndForm As Long
Dim hMenu As Long

' hWndForm = FindWindow("ThunderXFrame", UserForm1.Caption) 'XL97
hWndForm = FindWindow("ThunderDFrame", UserForm1.Caption) 'XL2000/2002

hMenu = GetSystemMenu(hWndForm, 0)
DeleteMenu hMenu, SC_CLOSE, 0&
' ShowWindow hWndForm, SW_SHOW 'inutile dans l'événement Initialize
DrawMenuBar hWndForm
SetFocus hWndForm

End Sub

En vous souhaitant une très bonne soirée. Merci de me tenir au courant
Jean
 

Discussions similaires

Réponses
28
Affichages
1 K
Réponses
27
Affichages
895
Réponses
13
Affichages
408
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…