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 :

Rappel avant la fermeture d'un excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 94
    Par défaut Rappel avant la fermeture d'un excel
    Bonjour,

    Lorsque je clique sur la croix rouge d'un fichier excel je voudrais ouvrir un userform qui me demande "Avez vous pensez à faire ça?" avec 2 boutons "oui" et "non".

    Si on clique sur "oui", je veux que ça ferme l'excel.
    Si je clique sur "non", je veux annuler la fermeture d'excel.

    Comment dois je faire? Moi je pensais à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
        UserForm1.Show
     
    End Sub


    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
    Private Sub CommandButton1_Click()
     
        Unload UserForm1
     
        ActiveWorkbook.Close
     
    End Sub
     
     
    Private Sub CommandButton2_Click()
     
        Unload UserForm1
     
        ActiveWorkbook.Close = False
     
     
    End Sub
    Mais ça ne marche pas...

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    je veux que ça ferme l'excel.
    Tu veux fermer l'application Excel ou juste le classeur considéré...

    Sinon, dis ce qui ne marche pas qu'est-ce qui se passe ?

    cordialement,

    Didier

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 94
    Par défaut Reponse
    Je veux que ça ferme le classeur.

    Ca ne marche pas car:
    - qd je clique sur le bouton 1 il faut que je reclique une deuxieme fois pour que ça se ferme
    - qd je clique sur le bouton 2 ça me ferme qd meme le classeur...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut !

    Dans ThisWorkbook, tu peux mettre cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Fermer As Boolean
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Not Fermer Then
    Cancel = True
    End If
    End Sub
     
    Sub Quitter()
    Fermer = True
    Application.Quit
    End Sub
    Ensuite pour le bouton qui te permet de quitter, tu peux mettre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    ThisWorkbook.Quitter
    End Sub
    Et pour l'autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton2_Click()
    MsgBox("T'as choisi de rester dans l'appli, nananère !")
    End Sub
    Il fallait donc juste mettre ton cancel à True

    Bonne chance pour la suite !

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 94
    Par défaut Non résolu
    Dans le workbook jai rajouté Userform1.show:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Fermer As Boolean
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    UserForm1.Show
    If Not Fermer Then
    Cancel = True
    End If
    End Sub
     
    Sub Quitter()
    Fermer = True
    Application.Quit
    End Sub
    Dans les boutons:
    Bouton pour fermer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    ThisWorkbook.Quitter
    End Sub
    Bouton pour laisser ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton2_Click()
    MsgBox ("Veuillez Saver!")
    Unload UserForm1
    End Sub

    Or meme ac le bouton pour laisser ouvert, une fois le userform1 unloader, le classeur se ferme..

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Pas la peine de te casser la tête avec un USF, vois ainsi :

    réagit à la croix de fermeture du Classeur et d'Excel, les répercutions diffèrent ensuite si OK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim intReponse As Integer
    'pour la fonction MsgBox, voir l'aide VBA ou les Tutos sur DVP
    'pour le cancel et BeforeClose, voir le lien indiqué
     
    intReponse = MsgBox("Avez-vous bien fait ce qu'il faut ?", vbYesNo, "Soluces Ormonth - DVP")
    If intReponse = 7 Then Cancel = True
    'http://silkyroad.developpez.com/VBA/EvenementsClasseur/#LII-5
    End Sub
    Les évènements du module objet ThisWorkbook par Silkyroad.

    Tu peux décider aussi de fermer direct sans sauvegarder et sans message si besoin si la réponse est oui...

    cordialement,

    Didier

Discussions similaires

  1. comment lancer du code avant la fermeture d'Excel
    Par antoine dpt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2010, 18h24
  2. Réponses: 3
    Dernier message: 08/04/2008, 18h28
  3. Détecter fermeture WORD dans EXCEL
    Par RG25550 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 28/02/2008, 20h39
  4. Fermeture d'un Excel
    Par pioupiouafr008 dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/07/2007, 14h57
  5. Test avant la fermeture d'une fenêtre (onBeforeUnload)
    Par dchanay dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/02/2007, 14h49

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