Dates de début et de fin de semaine

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

  1. Créez une zone de texte  sur un formulaire.
  2. Cliquez sur cette zone de texte avec le bouton droit de la souris, puis sélectionnez Propriétés.
  3. Dans la propriété Nom, tapez par exemple : txtDebutSemaine
  4. 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
  5. Créez une seconde zone de texte. Nommez-la txtFinSemaine.
  6. Définissez sa source en tapant cette fois :
    =Date() + 7 - JourSem(Date(); 2)
    ou en anglais :
    =Date() + 7 - WeekDay(date(); 2)
Pour info…
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 :

…pour remplacer un critère du type :

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 :

A taper dans un bloc Sub/End Sub, bien sûr.

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

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *