Exécuter une macro lors de la première ouverture annuelle du classeur

Bonjour à tous,

Je reviens vers vous pour demander de l'aide sur la dernière macro qu'il me manque avant exploitation de mon tableau au bureau. C'est un peu le boss final en quelque sorte !

Il s'agit d'une application visant à sélectionner par priorité des agents muséographiques souhaitant travailler un jour férié (c'est mieux payé mais il n'y a pas de place pour tous les volontaires).

L'onglet "Sélection" est composé de deux parties: les fériés de l'an passé en gris et les fériés de l'année en cours en rose + 1er janvier de l'année à venir en gris. Les dates affichées au dessus de chaque jour fériés sont conçues pour se mettre à jour automatiquement à chaque changement d'année. Pour accompagner cette mise à jour de date, j'ai créé une macro (visible dans le module 6 de la fenêtre VBA), qui me permet de décaler toutes les données saisies pour chaque agent. Ainsi, les données de l'année qui vient de passer se retrouvent dans la partie grisée. La partie rosée, quant à elle, devient vierge.

Il s'agit simplement de copier/coller et de suppressions, rien d'extraordinaire en soi pour cette macro qui fonctionne très bien. Seulement voilà, je suis uniquement capable de l'assigner à un bouton. Or, une macro aussi "dangereuse" vu qu'elle déclenche des suppressions de données, risque d'entraîner des accidents si elle reste disponible via un simple bouton (même dans un onglet caché, choix que je ferai si faute de mieux).

Ma demande: Je souhaiterais que cette macro (qui ne sert qu'une seule fois dans l'année) s'active automatiquement lorsque le classeur est ouvert pour la première fois de l'année (quelle que soit l'année), excepté pour l'année 2021 qui est déjà à jour.

Je suppose qu'il faut l'intégrer au module ThisWorkbook et ajouter quelques lignes de code qui sont, pour le moment, au-delà de mes compétences. Après, je vous avoue que je ne sais pas si une telle demande est possible, j'ai peut-être trop d'imagination. Et puis va aussi se poser la difficulté de vérifier le fonctionnement de cette macro.

Dans tous les cas, je vous remercie de votre attention et reste à votre disposition si il vous faut davantage de précisions.

Bien cordialement.

PS: Il y a un onglet masqué "Fériés" qui sert à calculer les dates et faire les mises à jour. Peut-être qu'il pourra vous être utile pour le traitement de cette demande.

12cardinal-forum.xlsm (102.27 Ko)

Bonjour,

J'ai créé une petite macro qui s'appelle HappyNewYear

Dans le Workbook_Open la macro vérifie que c'est la première ouverture de l'année.

Si c'est le cas elle appelle HappyNewYear, le reste du temps elle ne fait rien.

En fait, il est créé un nom dans le classeur qui est visible dans le Gestionnaire de nom et qui s'appelle "AnEnC" ce nom contient la valeur 2020.

Lors de votre prochaine vérification. La macro constatera que c'est une nouvelle année et vous souhaitera la bonne année...

Elle mettra en même temps à jour la valeur de "AnEnC" pour 2021... et lors de la première ouverture en 2022 la macro HappyNewYear se déclenchera à nouveau.

Vous pouvez remplacer HappyNewYear par VotreMacroPréféré ou MonBeauSapin... ça ne fera pas de différence.

Nota : Il est possible de masquer le Nom "AnEnC" en exécutant cette ligne de macro dans la fenêtre d'exécution :

ThisWorkbook.Names("AnEnC").Visible = False

A+

Bonjour Galopin01,

Merci infiniment pour cette solution très astucieuse, fallait y penser ! J'ai parfaitement pu l'adapter à mon tableau et tout fonctionne à merveille. J'ai bien saisi le sens du code que vous avez écrit et pour être honnête, je m'attendais à quelque chose de beaucoup plus compliqué (mais je sais qu'il n'est pas facile de faire simple). Je pense aussi utiliser l'idée de la msgbox pour signifier l'accomplissement de la mise à jour. Tout ceci me motive davantage à poursuivre mon apprentissage, merci encore !

Cordialement.

Rechercher des sujets similaires à "executer macro lors premiere ouverture annuelle classeur"