Re : Compteur zéro
Bonjour sten83, Jacou et le forum,
Pour activer ou désactiver automatiquement une action dans l'application Excel, il faut mettre en place une procédure dans le module objet ThisWorkBook qui se déclenchera lorsqu’un évènement prédéfini surviendra.
Les procédures évènementielles du module objet Thisworkbook peuvent prendre en compte : le classeur (Workbook), la collection de feuille dans le classeur (Workbook_Sheet), la fenêtre contenant le classeur (Workbook_Window).
Private Sub Workbook_Open() permet de déclencher une procédure à l’ouverture du classeur.
Concernant ton projet, tu souhaites qu’à la première ouverture du classeur en début d’année les valeurs des cellules L5 et L6 de la feuille « Feuil1 » soient remise à zéro.
Début d’année est une période qui peut s’étendre sans fin ! Il faut donc connaître l’année de la dernière ouverture du classeur pour la comparer avec l’année de l’ouverture en cours et vérifier si son millésime est supérieur pour déclencher la procédure qui réalise la mise à zéro des cellules.
Dans le classeur joint, le millésime de l’année en cours est mis en mémoire dans la case A1 de la feuille masquée Paramètres. Cette cellule est nommée "AnDernier" dans le gestionnaire des noms.
Si, à l’ouverture du classeur, le millésime de l’année en cours est supérieur à la valeur de la cellule "AnDernier", c’est qu’il y a eu changement d’année depuis la dernière ouverture du classeur et que c’est la première ouverture depuis la fin de l’année enregistrée. Cet évènement déclenche automatiquement la procédure de mise à zéro des cellules L5 et L6 ainsi que l’enregistrement du millésime de l'année en cours dans la feuille paramètres afin d’éviter que le déclenchement ne se reproduise à chaque nouvelle ouverture.
La procédure installée dans le classeur joint :
Private Sub Workbook_Open()
If Year(Date) > Range("AnDernier").Value Then
Sheets("Feuil1").Range("L5") = 0
Sheets("Feuil1").Range("L6") = 0
Range("AnDernier").Value = Year(Date)
End If
End Sub