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][Excel] Interdire de fermer un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut [VBA][Excel] Interdire de fermer un userform
    Bonjour,
    je souhaiterai empêcher les utilisateurs de fermer par la croix Rouge, certains userform.
    Est-ce possible ? comment et/ou par quel code ???

  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 038
    Points
    20 038
    Par défaut
    oui c'est possible en passant à true le paramétre Cancel de l'action évenemetielle QueryClose ... par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim bAutoriseFermeture As Boolean
     
    Private Sub UserForm_Activate()
    bAutoriseFermeture = False
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     Cancel = Not bAutoriseFermeture
    End Sub
     
    Private Sub CommandButton1_Click()
      bAutoriseFermeture = True
      Unload Me
    End Sub
    le bouton CommandButton1 est la pour permettre la fermeture...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    ok pour ton code mais moi cela ne marche pas chez moi.
    J'ai mis ton code dans mon Userform !!!
    Est ce la bonne place ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Accueil_Activate()
    bAutoriseFermeture = False
    End Sub
    Private Sub Accueil_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = Not bAutoriseFermeture
    End Sub
    Merci

  4. #4
    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 038
    Points
    20 038
    Par défaut
    il manque la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim bAutoriseFermeture As Boolean

    à mettre tout en haut du code à ton userform ( variable globale.. )

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    non, en fait je l'ai mis aussi. Cela ne marche pas quand même. Je ne comprend pas pourquoi.

  6. #6
    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 038
    Points
    20 038
    Par défaut
    Citation Envoyé par mulanzia2003
    non, en fait je l'ai mis aussi. Cela ne marche pas quand même. Je ne comprend pas pourquoi.
    tu est sur de l'avoir bien mis..? ton userform s'appelle bien Acceuil..? place un point d'arrêt (F9) sur la ligne cancel=... histoire de voir si tu y passe bien lorsque tu clique sur la croix, et à ce moment la tu pourra vérifier la valeur de la variable bAutoriseFermeture

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    non cela ne marche pas quand je met un point d'arrêt.
    J'ai essayer en mettant un msgbox.
    Cela ne marche pas non plus.

    Voilà le code que je test.
    Dans la feuil1, un bouton avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub CommandButton1_Click()
    UserForm1.Show
    End Sub
    Puis le code rattaché à ma UserForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim bAutoriseFermeture As Boolean
     
    Private Sub UserForm1_Activate()
    bAutoriseFermeture = False
    End Sub
    Private Sub UserForm1_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = Not bAutoriseFermeture
    End Sub
     
    Private Sub CommandButton1_Click()
      bAutoriseFermeture = True
      Unload Me
    End Sub
    Merci de ton aide en tout cas

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    je te joins mon fichier vous trouverez peut être une solution!!!

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    J'ai regardé ton fichier et fais quelques test.
    Mets UserForm_.... à la place de UserForm1_...
    Chez moi en enlevant les "1", l'interdiction est active.

    Bon courage.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Re,

    J'ai fais un test sur une macro que je cré et le problème est le suivant :
    Mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub UserForm_Activate()
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Accueil_Activate()
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Accueil_QueryClose(Cancel As Integer, CloseMode As Integer)
    En faisant ça devrait fonctionné.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Excellent, tout fonctionne.
    En mettant simplement UserForm, cela s'applique à tous les UserForm.
    Surprenant.

    Encore merci de votre aide.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    D'où l'intérêt de ne jamais taper les procédures événementielles.

    Il vaut bien mieux les générer en utilisants les listes déroulantes de l'éditeur en ayant sélectionné le form concerné.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. [XL-2000] Userform VBA Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/04/2015, 13h49
  2. [VBA Excel] Tableau avec données du userform et de formules
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2006, 13h29
  3. [VBA][Excel]Mettre un bouton d'aide sur un userform
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/01/2006, 18h30
  4. VBA Excel : Appel d'un userform à l'aide d'une variable
    Par pierrot657 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/06/2005, 23h08
  5. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02

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