Dans la série "comment trouver la date de..." :
comment afficher dans une zone de texte d'un formulaire, le 1er jour de la semaine 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 : txtDebutSemaine
- Toujours dans les propriétés, définissez la source en tapant :
=Date() - JourSem(Date(); 2) + 1
ou en anglais :
=Date() - WeekDay(Date(); 2) + 1
- Créez une seconde zone de texte. Nommez-la
txtFinSemaine.
- Définissez sa source en tapant cette fois :
=Date() + 7 - JourSem(Date(); 2)
ou en anglais :
=Date() + 7 - WeekDay(date(); 2)
La fonction WeekDay(UneDate; UnCode) donne le jour de semaine d'une date, donc un chiffre compris entre 1 et 7. Si vous êtes francophone (ou non anglo-saxon, en tout cas !), il faut fournir le code 2 en deuxième paramètre. Cette valeur 2 indique que la semaine démarre le lundi. Vous pouvez remplacer ce 2 par la constante vbMonday, quand vous programmez en VBA.
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 Semaine: Date() - JourSem(Date(); 2) + 1
Fin Semaine: Date() + 7 - JourSem(Date(); 2)
Les calculs en question peuvent aussi être utilisés sous forme de critères (et non plus sous forme de champs calculés). Par exemple, on pourrait écrire, comme critère sous un champ
Date/Heure :
Entre Date() - JourSem(Date(); 2) + 1 Et Date() + 7 - JourSem(Date(); 2)
...pour remplacer un critère du type :
Entre #29/01/2009# Et #04/01/2009#
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 :
Dim dtDebutSemaine As Date
Dim dtFinSemaine As Date
dtDebutSemaine = Date() - WeekDay(Date(), vbMonday) + 1
dtFinSemaine = Date() + 7 - WeekDay(Date(), vbMonday)
MsgBox "Début de semaine : " & dtDebutSemaine
MsgBox "Fin de semaine : " & dtFinSemaine
A taper dans un bloc
Sub/End Sub, bien sûr.
Pour obtenir le début et la fin d'une semaine quelconque, vous pouvez remplacer tous les Date() donnés plus haut par un champ Access qui contiendrait une date quelconque.
Derniers commentaires