[VBA-E] Masquer Element Userform

a.dequidt Messages postés 42 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche a supprimer la croix en haut a droite de la fenetre d'un userform...

Merci
--
Je suis chainte ...
          ... ET ALORS?
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Si, c'est possible avec les APIs de Windows.

    ATTENTION NE PAS OUBLIER D'AVOIR UN BOUTON POUR FERMER.........!

    ---------------------------- module 1 pour Auto_open -----------------------------------
    'Pour éviter que les utilisateurs ne ferment un userform
    'A placer au début du 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

    Sub auto_open()
    UserForm1.Show (modal)
    End Sub
    ----------------------------------------------------

    ----------------- Module API_Sup_Croix -----------------------------
    'Suppression Croix X userform a l'initialisation
    '-----------------------------------------------
    Sub SupprimerFermeture(Name_Userform As String)
    Dim hWnd As Long
    hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
    "X", "D") & "Frame", Name_Userform)
    SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
    End Sub
    -------------------------------------------------------------

    'Dans chaque code de userform mettre :
    Private Sub UserForm_Initialize()
    Call SupprimerFermeture(Me.Caption)
    '... autres instructions d'initialisation
    End Sub

    Private Sub CommandButton1_Click()
    End
    End Sub
    4
  2. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonjour a.dequidt,

    A ma connaissance ce n'est pas possible.
    Par contre tu peux inhiber la croix de fermeture du formulaire en complétant l'événement 'QueryClose' comme suit :

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
    End Sub


    Tu peux même y ajouter un message d'avertissement :

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
    MsgBox "Pour fermer ce formulaire, utilisez le bouton Fermer !",vbOKOnly+vbInformation
    Cancel = True
    End If
    End Sub


    Cordialement.
    -1