Alerte date nouvelle année

Bonjour à toutes et à tous,

j’aurai besoin de votre aide pour réaliser ce qui suit;

dans le fichier ci-joint, j’ai un tableau simple avec comme en-tête les noms des mois de l’année.
Plus précisément en cellule C5 jusqu’en cellule N5.

Mon souhait serait d’avoir une macro qui se déclenche chaque 10 Janvier pour effacer les données qui sont inscrites depuis la cellule C6 jusqu’à la cellule N10.

Je vous remercie d’avance pour votre aide.

Cordialement,
Rubis

Rubis57-2.xlsm (8,9 Ko)

Salut Rubis
a l’ouverture du fichier si la date du jour est le 10 janvier de l’année en cours ça efface les cellules de C6 à N10

A mettre dans Workbook

Private Sub Workbook_Open()

    If Date = DateSerial(Year(Date), 1, 10) Then
        Worksheets("Feuil1").Range("C6:N10").ClearContents
    End If

End Sub

Rubis57-2.xlsm (12,3 Ko)

1 « J'aime »

Salut taz,

SUPER, j’ai modifié la date pour faire l’essai dans mon fichier réel et cela fonctionne.

Merci à toi et bonne fin de week-end.

A+

Cordialement,
Rubis

Bonjour,
En complément de la réponse de taz.
Si le fichier est ouvert plusieurs fois la même journée du 10 janvier, on va perdre ce qui aura été mis lors des ouvertures précédentes.
Perso j’aurais ajouté un nom dans le gestionnaire de noms, nommé par ex : annee, et dont la valeur est 2026 (année actuelle)
L’an prochain, le 10 janvier, on vérifie donc qu’on est bien le 10/01, et si l’année est inférieure à l’année en cours (donc 2027), on efface, et on modifie le nom « annee » en 2027.
Ainsi, ouvertures multiples possibles
Le code :

Private Sub Workbook_Open()
If Date >= DateSerial(Year(Date), 1, 10) Then
    If [annee] < Year(Date) Then
        Worksheets("Feuil1").Range("C6:N10").ClearContents
        ActiveWorkbook.Names("annee").RefersToR1C1 = Year(Date)
    End If
End If
End Sub

Bon dimanche

1 « J'aime »

Bonjour à tous,

Est-ce qu’il y a une possibilité que le classeur ne soit pas ouvert le 10/01 (week-end ou autre) ?

Daniel

Effectivement.
En remplaçant le = par >= dans mon code, cela devrait le faire
Modification effectuée

1 « J'aime »

Bonjour Cousinhub,

Merci pour la participation.

  1. Alors, je n’avais pas pensé à cela ! Merci.
    Dans mon fichier réel il y a déjà un nom « ANNEE » dans le gestionnaire qui est basé sur un calendrier.
    Cela irait si je prends celui-ci ?

Bonjour Daniel,

Merci pour la participation.

Oui effectivement, il se peut que le fichier soit ouvert plusieurs fois dans la journée. Mais comme Cousinhub l’a modifié, cela est OK.

Hi,
quelle valeur a ce nom?

Re,
la valeur est 2027

Re-,
Je pense qu’il est préférable de créer un nouveau nom, uniquement dédié au code fourni.
Tu peux le nommer comme tu veux (genre « an9 » an neuf…)
Et tu l’insères dans mon code

Private Sub Workbook_Open()
If Date >= DateSerial(Year(Date), 1, 10) Then
    If [an9] < Year(Date) Then
        Worksheets("Feuil1").Range("C6:N10").ClearContents
        ActiveWorkbook.Names("an9").RefersToR1C1 = Year(Date)
    End If
End If
End Sub
1 « J'aime »

Re,

c’est fait, j’ai mis en place comme indiqué et cela fonctionne.

Merci encore pour ce joli travail.

A une prochaine fois et bon dimanche.

Cordialement,
Rubis

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.