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 :

[VBA-E]Cacher le bouton fermer


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut [VBA-E]Cacher le bouton fermer
    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.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    c'est quoi pour toi un userform classique.. un userform c'est une form utilisateur .... le bouton closebutton ..? c'est quoi?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Voici un userform et son "closebutton"



    Merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je ne sais pas le fermer mais je sais le rendre inactif
    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
    où GetOut est un boolean déclaré en Public, qui permet aux seuls users "autorisés" de fermer par la croix

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    en un peu plus simple :
    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
    Pardon ousk

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    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

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    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

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Ok merci je ferais sans !



    avec VBA

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut handle pas handle
    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

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Voila le résultat de ce code !



    Merci !

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par bbil
    en utilisant FindWindowA pour trouver le handel...
    Et tu pouvais pas le dire avant, sacrebleu !! (je suis vraiment trop c*n de ne pas y avoir penser )

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par ThierryAIM
    Et tu pouvais pas le dire avant, sacrebleu !! (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 !

  14. #14
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par boux2
    petit message si je peux me permettre : Il ne faut jamais se dévaloriser !
    T'inquietes, je n'en suis pas ça près, et je sais reconnaitre quans je me goure

    Mais Merci quand même

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/03/2024, 14h44
  2. Cacher bouton fermer, minimizer,maximiser
    Par aziatedu13 dans le forum MFC
    Réponses: 2
    Dernier message: 11/06/2009, 13h45
  3. [VBA ACCESS]cacher des boutons
    Par kikilevrai dans le forum Access
    Réponses: 3
    Dernier message: 20/06/2006, 17h13
  4. [VBA-E] Bouton fermer d'un userform
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2006, 14h15
  5. [VBA-E]Bouton fermer inactif
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2006, 13h19

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