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.
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
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 ?
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