IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

userform non "fermable"


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut userform non "fermable"
    bonjour a tous,

    Voilà, j'ai un UF qui s'ouvre à l'ouverture d'un fichier excel.

    Je voudrais que l'utilisateur ne puisse pas fermer le UF en cliquant sur la petite croix en haut a droite mais seulement en cliquant sur les bouton qui lui sont proposé dans l'UF.

    Il doit bien y avoir une propriété ou quelque chose comme ça

    Merci pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Effectivement,

    Au tout début du code de ton UF, tu colles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    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

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    merci mon gars

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Pas de quoi, gamin.

  5. #5
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour,

    J’ai découvert Excel une époque où il n’existait que sur Mac, et Mac OS continue à être mon environnement principal.

    Pour ces raisons, j’ai tendance à privilégier les variantes de code VBA qui fonctionnent dans les 2 environnements.

    Pour rendre la croix de fermeture inopérante, il est inutile de faire appel à des API Windows :

    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)
        If CloseMode = vbFormControlMenu Then
            Cancel = True
        End If
    End Sub
    à coller dans le module du UserForm est fait pour cela ! Cela fonctionne avec la croix de fermeture de Windows :



    comme avec le bouton de fermeture de Mac OS :



    Cordialement

    Michel Gaboly

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    C'est bien aussi... merci a tous les deux.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo