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 :

Private Sub Workbook_BeforeClose(Cancel As Boolean) conditionnel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Private Sub Workbook_BeforeClose(Cancel As Boolean) conditionnel
    Bonjour,

    je voudrai exécuter le code de Workbook_BeforeClose de manière conditionnel, je ne sais pas si cela est possible.
    Dans certains cas je voudrai ne pas exécuter au close du fichier

    2 façons de voir les possibilités

    1) soit passer un paramètre lors de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).close
    et tester le paramètre au début du BeforeClose pour sortir en sautant le code

    2) soit :
    exécuter le code si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).close True
    et ne pas l'exécuter si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).close False

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi n'effectue pas le test en amont de ta commande Close, cela me parait plus logique

    [EDIT]
    Un petit exemple d'un fichier qui ne se ferme pas si la cellule nommée pMaintenance a comme valeur VRAI

    Tesr logique effectué dans la procédure Workbook_BeforeClose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Cancel = Me.Names("pMaintenance").RefersToRange.Value
    End Sub
    et on pourrait ajouter à la ligne suivante l'affichage d'un message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If Cancel Then MsgBox "Vous êtes en maintenance"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Bonjour et merci

    je ne suis pas sur de tout comprendre dans l'exemple,

    en fait je veux fermer le fichier dans tous les cas mais avec ou sans exécution d'une partie du code de Workbook_BeforeClose

    C'est à dire pouvoir tester qq chose dans la fermeture pour sauter un morceau de code

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A mon tour de ne pas comprendre ce que tu veux.

    Résumons Cancel est un booléen et sa valeur par défaut est False donc si Cancel est à True le classeur ne se ferme pas
    J'imagine que tu sais à quel moment tu souhaites que la fermeture se fasse ou pas. C'est donc un test logique

    Tu peux donc faire le test directement s'il est simple comme mon exemple le démontre soit en créant une fonction qui renvoie un booléen
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Pour moi la compréhension que j'ai jusqu'à présent c'est que lorsque je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).close True
    le fichier se ferme en enregistrant le contenu du fichier et en exécutant le code de Workbook_BeforeClose

    et lorsque je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).close False
    le fichier se ferme SANS enregistrer le contenu du fichier et mais en exécutant quand même le code de Workbook_BeforeClose

    Je me rends compte que je n'ai pas bien exprimé ma demande dans mon 1er post et ce je voudrai s'éclairci en lisant tes réponse :

    Ce que je voudrai c'est pouvoir différencier mon code dans Workbook_BeforeClose suivant si on est en Close False ou en Close True

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'en reviens à ma première réponse.
    Au lieu de placer la procédure dans Before_Close, je l'exécuterais avant l'instruction Workbooks(fichier).close True
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Fonctionnement de Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Par retraite83 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/04/2020, 15h22
  2. [XL-2016] Private Sub Workbook_BeforeClose - comment exécuter la procédure plusieurs fois ?
    Par Henri1830 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/09/2019, 17h39
  3. [XL-2016] Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Par retraite83 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/05/2019, 13h23
  4. Réponses: 9
    Dernier message: 06/06/2006, 22h05
  5. mettre plusieurs private sub sur un bouton ?
    Par juju33 dans le forum Access
    Réponses: 2
    Dernier message: 26/03/2006, 16h22

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