Code VBA lancé le 1er janvier de chaque année

Bonjour,

J'ai quelques soucis avec le fichier ci-joint.

Il faudrait qu'une fois par année au minimum, au début janvier, une macro contrôle si les cas inscrits sur la feuille "Base" ne sont pas plus vieux que 2 ans et déplace les cas concernés sur une autre feuille, éventuellement à créer.

Dans l'exemple fourni, par exemple, les cas normaux 2009 de la feuille "Base" devraient être déplacés sur une feuille "2009" à créer et il y a 2 cas 2008 qu'il faudrait déplacer sur la seule feuille d'archive existante "2008".

J'ai commencé à chercher une solution en plaçant un code sous "ThisWorkBook", mais je suis resté bloqué. Pouvez-vous m'aider à avancer ?

Quelques questions en vrac :

- Serait-il possible que ce code ne se déclenche qu'une fois par année (du moins en totalité) ? Par exemple est-il possible d'enregistrer la date du jour lors de la fermeture et de la comparer avec la date lors de l'ouverture afin de voir si on a changé d'année entre deux avant de lancer la totalité du code ?

Ou est-il possible qu'un code se déclenche alors que le fichier est fermé, par exemple en fonction d'une date (tous les 1er janvier, alors que nous réveillonnons gaiement) ? J'en doute, mais pourquoi ne pas poser la question quand-même !

A vous relire.

Bonjour

Un essai

Salut Banzai,

Merci infiniment pour ta réponse. Apparemment ton code répond exactement à mon attente. Un super boulot

J’ai par contre un autre problème : une partie des codes ne sont parfois pas déclenchés comme ça devrait être le cas. Ca n’a rien à voir avec ton code, puisque je me rends compte maintenant que c’est également le cas avec le fichier exemple que j’avais placé dans mon premier message ci-dessus.

Par exemple, j’ouvre ce fichier « Entrées hebdomadaires », j’essaie d’inscrire un critère de recherche en A4 et rien ne se passe, alors que le code Private Sub Worksheet_Change(ByVal Target As Range) devrait être lancé. Par contre d’autres codes fonctionnent, comme celui placé sous mon bouton « Nouvelles entrées ».

Je fais ensuite d’autres essais – également avec d’autres fichiers – puis tout à coup, lorsque j’inscris à nouveau un critère en A4 dans le fichier « Entrées hebdomadaires », la recherche voulue se fait tout à fait normalement !!!!!!!! Est-ce que ça n’aurait pas à voir avec un code du genre .EnableEvents = True qui serait mis en fonction sans que je le veuille et qui influencerait d’autres macros ? Je pense à ça car j’avais une fois un code qui empêchait que les calculs soient faits automatiquement tant qu’un fichier était ouvert et que ça bloquait les calculs automatiques de tous les fichiers ouverts en même temps.

A te / vous relire

Bonjour,

Je n'ai pas le même souci que toi. Tout semble fonctionner normalement.

Par exemple, j’ouvre ce fichier « Entrées hebdomadaires »,...

Lorsque tu ouvres le fichier, est-ce que la macro dans Thisworkbook est activée ?? Dans ton fichier ici, elle est inopérationnelle.

Pour moi, le souci ne vient pas de ce fichier mais d'un autre. Il faudrait donc si dans tes autres fichiers tu n'as pas un code qui suspend les macros par une instruction ENABLEEVENTS.

A te relire.

Bonjour

Bien vu

Désolé je devais être fatigué

La dernière ligne dans ma macro devrait être

Application.EnableEvents = True

et pas

 Application.ScreenUpdating = True

Bonne journée

Génial, tout fonctionne à nouveau normalement.

Merci à tous deux pour votre précieuse aide.

Bonne fin de journée.

Rechercher des sujets similaires à "code vba lance 1er janvier chaque annee"