procédure before_save

  • Initiateur de la discussion Initiateur de la discussion Blafi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Blafi

XLDnaute Occasionnel
Bonjour le forum,

J'ai juste une question (simple?)à poser :

J'ai un classeur dans lequel j'ai mis une procédure before_save(dans thisworkbook) qui vérifie un certain nombre de choses avant d'autoriser l'enregistrement du fichier.

Lorsque je clique sur l'outil enregister ou que je fais fichier/enregistrer, la procédure before_save s'éxécute sans pb..

Par contre, j'ai voulu mettre dans la première feuille de ce classeur un bouton qui lance l'enregistrement par une macro contenant Activewokbook.save. Si je clique sur ce bouton, je pensais que la procédure before_save devait s'éxécuter : or elle ne s'éxécute pas et mon classeur est enregsitré sans l'éxécuter...

Ma question : comment faire pour qu'en lançant l'enregistrement par ma macro, la procédure before_save de thisworkbook s'éxécute ??

Merci de vos réponses et à ++
 
Re : procédure before_save

Bonsoir,
si je ne me trompe pas tu ne peux pas lancer une macro évenementielle de puis une macro d'un module". La macro évenementielle se déclenche sur un "évenement" et pas sur "l'appelle" d'une autre macro.
 
Re : procédure before_save

Merci BrunoM45 et Skooby pour vos réponses...

En fait j'ai rééssayé et ma procédure beforesave commence bien à s'éxécuter mais ne fait pas ce qu'elle devrait faire...

Dans le classeur joint, la procédure beforesave doit vérifier qu'il n'y a pas de feuille non prévue dans le classeur (je les ai appelées feuilles indues) et si il y en a les supprimer avant d'enregistrer le classeur après avoir posé la question de savoir si on veut bien les supprimer...

Or beforesave se lance bien quand je clique sur mon bouton, elle trouve les feuilles indues et propose de les supprimer... mais ne le fait pas! (alors que si je clique sur le bouton enregistrer, elle le fait !)

Pour pouvoir vous joindre le fichier (et donc l'enregistrer) j'ai retiré la procédure beforesave de Thisworkbook et je l'ai copiée dans le module "sauve". pour examiner mon pb il faut donc reprendre l'ensemble de beforesave qui se trouve dans "sauve" et la remettre dans
thisworkbook...

Qui peut me dire ce qui cloche dans mes procdures ??

Merci d'avance et à plus...
 

Pièces jointes

Re : procédure before_save

Re,
Bonsoir BrunoM45,
vraiment bizzare ce qui se passe.... je ne vois pas désolé....😕
Si ta macro fait exactement la même chose que le bouton enregistrer et bien elle n'est d'aucune utilité à moins que je me trompe....
 
Re : procédure before_save

Encore moi...

Je prècise que je n'ai pas joins le fichier qui sera appelé à être utilisé par mes "employés" qui ne connaissent rien à excel et vba... ainsi dans le vrai classeur, des feuilles peuvent se rajouter en cours d'utilisation et ma macro beforesave doit les supprimer avant d'enregistrer..

pour simplifier l'usage par ces personnes, parmi tous les autres boutons de mon appli je veux en mettre un qui permet d'enregistrer le classeur très simplement et de manière anodine pour l'utilisateur.. d'où ma volonté de mettre mon bouton... qui ne provoque pas les effets attendus...

Où est la solution ?
 
Re : procédure before_save

Je te propose de contourner le problème, je m'explique:
tu "grises" le bouton enregistrer à l'ouverture du fichier (évenement open) pour ne pouvoir enregistrer qu'avec le bouton perso.
De ce fait, tu déplaces la suppression des feuilles dans la macro perso.
Et tu crés un évenement beforeclose dans lequel tu réactives le bouton d'enregistrement.
Pour griser: application.CommandBars("Standard").Controls("Enregistrer").Enabled=false
pour réactiver: application.CommandBars("Standard").Controls("Enregistrer").Enabled=true
 
Dernière édition:
Re : procédure before_save

Merci skoobi pour ta solution.. Je n'ai pas tout compris mais j'essayerai demain....

J'ai un doute sur le fichier joint plus haut car en le rouvrant je n'ai pas retrouvé mon boutons...
Je le rejoins donc ci-dessous mais il faudra en plus rajouter des feuilles "parasites" pour essayer la macro beforesave....
J'ai essayé de déboguer la chose : quand je clique sur le bouton perso, je lance ma macro SauveFifi qui passe la main à la macro beforesave qui s'éxécute normalement sauf qu'elle ne supprime pas la feuille indue qu'elle a pourtant ^proposé de supprimer !! et je ne comprends pas pourquoi....
Si tu as la solution...
 

Pièces jointes

Re : procédure before_save

J'ai trouvé pour griser ou non fichier - enregistrer:
application.CommandBars("Worksheet Menu Bar").Controls("Fichier").Controls("Enregistrer").Enabled=false
application.CommandBars("Worksheet Menu Bar").Controls("Fichier").Controls("Enregistrer").Enabled=true
🙂
 
Re : procédure before_save

Merci Skoobi..
Avec les idées plus claires ce matin, j'ai compris ce que tu me proposait de faire.... je vais essayer dans la journée. Mais je me pose la question : ta manip grise l'outils "enregistrer" mais ne grise pas le menu fichier/enregistrer laissant toujours la possibilité d'enregistrer... Comment griser aussi ce menu ?

Si ça marche, je classerai mon pb initial dans la catégorie "inconnus de VBA" car je ne comprends toujours pas, la macro beforesave s'éxécutant bien quand je clique sur mon bouton, pourquoi elle ne supprime pas les feuilles proposées !..
Je te tiens au courant.. Bonne journée
 
Re : procédure before_save

Mille excuses Skoobi, je n'étais pas réveillé !

Tes commandes grisent bien l'outil et le menu enregistrer...

Mais allons jusqu'au bout : j'ai essayé de griser aussi le menu "enregistrer sous" en ajoutant une ligne identique à celle qui grise enregister en remplaçant dans controls "Enregister" par "Enregister sous...". Apparement il n'aime pas car il me sort une erreur à chaque fois..

Mon ultime question : quelle expression employer pour faire référence à "Enregistrer sous" ?

Merci de ton aide et à bientôt.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
  • Question Question
Réponses
2
Affichages
2 K
muzan97
M
S
Réponses
10
Affichages
4 K
Sylvain29
S
V
  • Question Question
Réponses
14
Affichages
3 K
vadelacaisse
V
B
Réponses
4
Affichages
2 K
L
Réponses
1
Affichages
1 K
Lucien31
L
R
Réponses
15
Affichages
5 K
razorlight
R
S
Réponses
8
Affichages
6 K
B
Réponses
4
Affichages
1 K
B
Z
Réponses
12
Affichages
5 K
zorglubxp
Z
D
Réponses
4
Affichages
1 K
Donsimend
D
B
Réponses
5
Affichages
5 K
Brain Box
B
Retour