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 :

Fermeture d'un classeur "sans croix active" depuis un autre [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Fermeture d'un classeur "sans croix active" depuis un autre
    Bonsoir le forum,

    J’ai 2 classeurs Classeur_A.xls et Classeur_B.xls

    Une macro de Classeur_A.xls ouvre, modifie et sauve Classeur_B.xls.

    Or, Classeur_B.xls ne peut se fermer que par l’activation d’un bouton placé sur la page d’accueil de celui-ci. De plus, ce bouton demande la sauvegarde du classeur (B).
    (La croix de fermeture de Classeur_B.xls est désactivée)

    Dans Classeur_B.xls, figurent les codes suivants :

    Le code du bouton placé dans la feuille « Accueil » du projet VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Btn_Bye_Click()
     
    Application.Run ("Thisworkbook.Fermeture")
     
    End Sub
    Dans l’objet « ThisWorkbook »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Quitter As Boolean
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    If Not Quitter Then
        MsgBox "Veuillez utiliser le bouton Quitter"
        Cancel = True
    End If
    End Sub
    Et

    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
    Public Sub Fermeture()
     
    Dim wk As Workbook
     
    EnableSystemMenu
    Quitter = True
     
     
    Compte_classeurs
     
    If MsgBox("Voulez-vous enregistrer ce fichier", vbYesNo) = vbYes Then ThisWorkbook.Save
     
    Application.DisplayAlerts = False
     
    If N = 1 Then
        Application.Quit
    Else
         ActiveWorkbook.Close (False)
    End If
     
    End Sub
    La macro ici appelée « Compte_classeurs » est accessoire et a pour objet de compter le nombre de classeurs ouverts et renvoie la variable N (Public)

    La macro ici appelée « EnableSystemMenu » gère, avec une autre « DisableSystemMenu », la croix de fermeture.
    (Bien entendu, cette partie n’a pas été développée par moi.)

    Ma question : Dans cette configuration, y-a-t-il malgré tout un moyen (code) de fermer Classeur_B.xls sans le sauver depuis Classeur_A.xls, en passant donc outre l’alerte ci-dessus "Veuillez utiliser le bouton Quitter"

    Merci pour votre aide.

    Marcel

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Une premiere idee simple. Je suppose que les deux classeurs sont ouverts dans la meme application. Dans le classeur A,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.enableevents = False
    Application.Workbooks("Classeur_B").close False
    Application.EnableEvents = True
    Cordialement,

    PGZ

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut EnableEvents
    Merci Pgz.

    Ta solution fonctionne parfaitement.

    En effet, la propriété "EnableEvents" s'applique à "Application" et non uniquement au classeur dans lequel elle est inscrite.

    Bien cordialement.

    Marcel.

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

Discussions similaires

  1. Activer un classeur ouvert sans connaitre son nom
    Par djjilou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2012, 17h47
  2. activer un classeur ouvert sans connaitre son nom
    Par touriste01 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 24/02/2011, 09h05
  3. [XL-2003] imprimer feuille d'un classeur sans l'activer
    Par shadows dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2010, 10h38
  4. Fermeture formulaire sans croix
    Par benejepo dans le forum IHM
    Réponses: 2
    Dernier message: 24/02/2007, 08h30
  5. [VBA]Detection de l'annulation de la fermeture d'un classeur
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2005, 15h36

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