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 :

Soucis exécution macro et Workbook_Close


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut Soucis exécution macro et Workbook_Close
    Bonjour à tous,

    J'ai un fichier Excel (que je ne peux malheureusement pas communiquer) qui requiert que certaines pages soient cachées, et que les feuilles et classeurs soient protégés en permanence.

    J'ai tout de même un bouton de "Settings" qui me rend ces feuilles visibles et enleve les protections.

    Pour des raisons plus qu'évidentes, il faut que ces protections soient remises en place une fois que je ferme le fichier. J'ai mis en place la célèbre fonction Workbook_Beforeclose et associé toutes mes macros.

    Petit soucis, cela est considéré par Excel comme une modification et la fenêtre "Voulez vous enregistrer les modifications..." apparaît alors et je souhaiterai qu'elle continue d'apparaître, mon but étant que si les utilisateurs font une bêtise, il leur soit possible de revenir en arrière via "ne pas enregistrer".

    Mon soucis intervient à ce niveau, si on clique sur annuler, les macros se sont lancées.

    M'est donc venu à l'esprit d'utiliser le Workbook_Deactivate. Si j'annule, le classeur se ferme tout de même. Pas bon.

    Puis de mélanger le Workbook_BeforeClose et le Workbook_WindowDeactivate,

    Au moment où la fenêtre est fermée, les macros se lancent. La commande "Annuler" est bien prise en compte...Cependant, aucun moyen de dissocier les actions pour "Enregistrer" ou "Ne pas enregistrer"...

    Si l'un d'entre vous a une meilleure idée, je suis preneur !

    Bonnes fêtes !

    E.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) je ne vois pas ce qu'a de "fameux" une procédure évènementielle classique !
    2) en existe une autre, non ? Par exemple Workbook_BeforeSave dont le nom est pourtant assez "parlant"

    Tu as deux choses à gérer ? l'une dans un évènement (remise des protections, que l'on sauvegarde ou non) et l'autre dans l'autre évènement (sauvegarder ou non)

    Où est la difficulté ?

  3. #3
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut
    Bonjour et merci pour votre réponse,

    Je ne suis pas sûr de bien comprendre ce que vous me dites.

    Je peux faire tout et n'importe quoi avec tel ou tel évènement mais comprenez bien que si à chaque fois qu'un utilisateur enregistre le fichier les protections se remettent en place.. cela devient fastidieux.

    Il n'est pas rare que l'on enregistre en cours de route. Toute procédure avant de fermer le classeur ne correspond pas à mon besoin.

    J'ai besoin qu'au moment ou on ferme le classeur, s'il est enregistré les macros se lancent ré-enregistrent et ferment le classeur (cela n'a rien de compliqué et je sais comment le gérer).

    Mon soucis intervient lorsque le fichier n'a pas été enregistré "à la main" et que la fermeture intervient. Je veux alors laisser le choix aux utilisateur d'enregistrer ou non mais je veux que dans tous les cas les macros s'executent (A LA FERMETURE SEULEMENT).

    J'aimerai, si possible, pouvoir gérer les réponses apportées à la fenêtre "voulez vous enregistrer les modifications", mais après une petite matinée de recherche, je n'ai pas trouvé de moyen.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    si à chaque fois qu'un utilisateur enregistre le fichier les protections se remettent en place
    Ah ...
    et où ai-je dit qu'il fallait gérer les protections dans l'évènement Workbook_BeforeSave ?
    Relis donc attentivement ce que j'ai écrit, s'il te plait

    PS : au fait un as un seul "petit souci" ou plusieurs "petits soucis" ?

  5. #5
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut
    Bonsoir,

    J'ai en effet plusieurs petits soucis que j'essaie d'expliquer à travers un seul et même.

    J'ai beau chercher en vous relisant, je ne capte toujours pas.

    l'une dans un évènement (remise des protections, que l'on sauvegarde ou non) et l'autre dans l'autre évènement (sauvegarder ou non)
    Le premier point n'est pas ce que je cherche à réaliser. C'est réellement au moment où l'utilisateur sort du fichier que j'ai besoin de remettre les protections. En effet, si le mdp n'est pas divulgué, il n'aura jamais accès à quelconque modification. Cependant si le mdp est divulgué à certains, et le fichier étant unique sur le réseau, j'ai besoin, pour palier à tout oubli, de remettre des protections à la fermeture du fichier (d'où l'évènement BeforeClose). Et là mes protections se relancent à peine j'appuie sur la croix, avant la fenêtre "Voulez vous enregistrer ...". En soit ce n'est pas dommageable pour l'utilisation, il suffit à l'utilisateur de re-saisir le mdp et de continuer à travailler (5s).

    Pour ma culture perso (j'ai appris VBA seul et donc désolé si certaines bases qui vous paraissent essentielles ne sont présentes chez moi) je cherche cependant à savoir s'il existe une solution.

    Merci pour votre intérêt,

    Cordialement,
    E.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    C'est pourtant clair :
    C'est réellement au moment où l'utilisateur sort du fichier que j'ai besoin de remettre les protections.
    Aspect et seul aspect à gérer dans la seule procédure évènementielle Workbook_BeforeClose
    Et pour ce qui est de la sauvegarde ou non des données : aspect et seul aspect à gérer dans la procédure évènementielle Workbook_BeforeSave
    Il y a donc DEUX gestions, chacune dans UNE procédure évènementielle.
    Je ne vois vraiment pas ce qui pose problème, là ...

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par ecell Voir le message
    Bonjour à tous,

    J'ai un fichier Excel (que je ne peux malheureusement pas communiquer)
    Youppi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Maintenant : tu as par ailleurs toujours la possibilité de :
    - déclarer une variable booléenne toto en public dans un module standard
    - d'ajouter ton propre bouton de sortie et d'y mettre toutes les instructions de ton choix dans son évènement click, avec toutes les boîtes de dialogues ou msgboxes de ton choix, de sorte à :
    aboutir à donner ou non à toto la valeur true
    - de mettre ceci dans before close :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      if not toto then cancel = true
    End Sub
    Ce qui forcera à sortir en utilisant uniquement le bouton ad hoc que tu as créé

    Tu peux même aller plus loin, en donnant à toto la valeur true à l'ouverture du classeur et en la passant à false lorsque protection enlevée (et remise à true lorsque protection remise), etc ...
    Pour résumer : "jouer" comme tu l'entends.

Discussions similaires

  1. protection feuille + exécuter macros
    Par Fab_nabou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/12/2006, 11h14
  2. Exécution Macro Excel à partir d'Access
    Par SylvainJ dans le forum Access
    Réponses: 1
    Dernier message: 11/08/2006, 14h58
  3. Réponses: 3
    Dernier message: 03/05/2006, 15h30
  4. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00
  5. [VBA-E] Petit souci commentaire macro
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/09/2005, 17h42

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