Desactiver croix

Résolu
cestlecoeur Messages postés 11 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 8 décembre 2008 - 21 nov. 2008 à 20:25
cestlecoeur Messages postés 11 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 8 décembre 2008 - 22 nov. 2008 à 12:28
Bonjour
Je souhaiterais griser la croix (non utilisable) ou ne pas la  faire apparaitre lors de l'ouverture d'un userform.
Cela vous parait il réalisable ?

7 réponses

cestlecoeur Messages postés 11 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 8 décembre 2008
22 nov. 2008 à 12:28
ca marche ... encore merci et désolé ...
Je tenterais de poser la question au bonne endroit bien que je n'ai pas trouver encore pour le VBA ...
désolé je suis blonde ...

Donc pas @+
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2008 à 21:49
salut,



<li>
Vous êtes ici : Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-DIVERS_220.aspx Divers] / [theme-DEBUTANTS_226.aspx Débutants] / desactiver croix</li>



userform = VBA , pas VB6 !
merci de faire attention aux rubriques



<hr />
'    SUPPRIMER LA CROIX D'UN USERFORM (VBA)
'    http://www.codyx.org/snippet_supprimer-croix-userform-vba_257.aspx#826
'    Posté par [ =647037 mortalino ] le 31/10/2006
<hr />





' *** A placer dans les déclarations Du UserForm

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

' *** Placer cette procédure aussi dans le
UserForm
'     dont la croix doit être
supprimée
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





'----------------------------------------------------------------



'Remarques :


'Nota : Si pendant l'affichage du UserForm le Caption est modifié,
la croix réapparaitra !







<hr size ="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
21 nov. 2008 à 21:53
Bonsoir,

Tu vas très vite comprendre l'intérêt de "poster" dans la bonne section... !
Tu as posté ici : Vous êtes ici : Thèmes / Visual Basic 6 / Divers

Je te réponds donc comme si tu développais en VB6 (je te crois...)

Option Explicit



Private Const SC_CLOSE = &HF060&
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 Sub Form_Activate()
  Dim sysmen As Long
    sysmen = GetSystemMenu(Me.hwnd, 0)
    DeleteMenu sysmen, SC_CLOSE, &H0&
End Sub


Ton problème, maintenant (juste pour le cas où tu ne développerais pas sous VB6, mais sous VBA) :
remplacer Me.hwnd (inconnu sous VBA) par un handle à extraire (c'est facile, mais je m'y refuse tant que la présente
 discussion reste là où elle a été ouverte ...)
J'espère que ma réponse sera lue par le plus grand nombre et qu'elle donnera
à réfléchir sur l'intérêt réel et IMPORTANT d'ouvrir une discussion là où il convient de la faire
cestlecoeur Messages postés 11 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 8 décembre 2008
21 nov. 2008 à 23:21
Bien reçu le message.

vous souhaite bonne soirée

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2008 à 23:56
en attendant tu as testé le bout de code que je t'ai fourni?
çà donne quoi?
s'il solutionne ton problème, pense à valider la réponse pour ceux qui chercheraient une question similaire (maintenant que ta question est re-placée)
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
22 nov. 2008 à 08:14
Bonjour (et un salut à PCPT),

Voilà donc (pour inhiber la croix en cause) mon code précédent transformé pour un UserForm VBA  :

Option Explicit
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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const SC_CLOSE = &HF060&





Private Sub Form_Activate()
  Dim monhwnd As Long
  monhwnd = FindWindow(vbNullString, Me.Caption)
  DeleteMenu GetSystemMenu(monhwnd, 0), SC_CLOSE, &H0&
End Sub


 
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
22 nov. 2008 à 08:22
Re

1) dans mon code : change bien sûr Form par UserForm
2) Je viens d'essayer le code de PCPT : il est plus élégant car il ne se contente pas d'inhiber la croix ==>> il la supprime purement et simplement. Je te le conseille donc.
Rejoignez-nous