Dates de début et de fin d’année
Voici une question d’actualité, avec la nouvelle année : comment afficher dans une zone de texte d’un formulaire, le 1er jour de l’année en cours, et le dernier jour dans une autre zone ?
Sur un formulaire
- Créez une zone de texte sur un formulaire.
- Cliquez sur cette zone de texte avec le bouton droit de la souris, puis sélectionnez Propriétés.
- Dans la propriété Nom, tapez par exemple :
txtDebutAnnee
- Toujours dans les propriétés, définissez la source en tapant :
=SérieDate(Année(Date()); 1; 1)
ou en anglais :
=DateSerial(Year(Date()); 1; 1)
…ce qui équivaut à créer une nouvelle date à partir de l’année actuelle, du mois 1 (Janvier), et du jour 1. - Créez une seconde zone de texte. Nommez-la
txtFinAnnee
. - Définissez sa source en tapant cette fois :
=AjDate("yyyy"; 1; [txtDebutAnnee]) - 1
ou en anglais :
=DateAdd("yyyy"; 1; [txtDebutAnnee]) - 1
…ce qui équivaut à ajouter 1 année à la zone précédente (on tombe le 1er de l’année suivante), puis à retrancher 1 de cette valeur (on tombe donc le 31/12 de l’année souhaitée).
Dans une requête
Ces formules peuvent être utilisées ailleurs dans Access : dans des requêtes, des états, du VBA. Dans une requête, il n’y a pas de zone de texte. Il faut en remplacement créer 2 champs calculés de cette forme :
Début Année: SérieDate(Année(Date()); 1; 1)
Fin Année: AjDate("yyyy"; 1 ;[Début Année]) - 1
En VBA
En VBA, seuls les noms anglais des fonctions doivent être utilisés, et les points-virgules doivent être remplacés par des virgules. Ce qui donne par exemple :
1 2 3 4 5 6 7 |
Dim dtDebutAnnee As Date Dim dtFinAnnee As Date dtDebutAnnee = DateSerial(Year(Date()), 1, 1) dtFinAnnee = DateAdd("yyyy", 1, dtDebutAnnee) - 1 MsgBox "Début d'année : " & dtDebutAnnee MsgBox "Fin d'année : " & dtFinAnnee |
A taper dans un bloc Sub/End Sub
, bien sûr.
je suis absolument d’accord
merci beaucoup à Mr Hervé Inissan
certain parlent trop pour ne rien dire! au moin ici je trouve ce que cherche de facon claire et precise bravo…