Calculer le 1er jour d’une semaine donnée

Je souhaiterais obtenir le premier jour de la semaine 37 de l’année 2011. Et ceci pour n’importe quelle année ou semaine. Comment faire ?

Le code

Voici une fonction VBA qui peut faire l’affaire (à recopier comme d’habitude dans un module standard de votre base de données) :

Tester !

  • La fonction doit être appelée au minimum avec le numéro de l’année concernée. Dans ce cas, vous obtenez la date du 1er jour de la semaine 1 de l’année (qui n’est pas forcément le 1er janvier de l’année, en France).
  • Si vous appelez la fonction avec une année et un numéro de semaine, vous obtenez le 1er jour de cette semaine. Toujours en mode de calcul français.
  • Pour adapter la fonction à d’autres pays, remplacez vbMonday et vbFirstFourDays par d’autres valeurs.

Pour tester la fonction directement :

  1. Ouvrez la fenêtre Exécution (CTRL + G).
  2. Tapez dedans :
    ? DateSemaineFR(2012) puis Entrée.
    Vous obtiendrez la date du 02/01/2012.? DateSemaineFR(2012, 32) puis Entrée.
    Vous obtiendrez la date du 06/08/2012.

Vous pouvez aussi extraire le 1er jour de la semaine en cours par :

Mais il y a plus simple pour celle-ci :

Vous aimerez aussi...

6 réponses

  1. Ostrich95 dit :

    Bonjour Hervé,

    Je travaille sur des dates au format (ss-aaaa) que je convertis avec succès en jj/mm/aaaa avec votre fonction. Cependant j’aimerais légèrement modifier cette fonction de façon à générer une date au jeudi ou bien le 4eme jour de l’année.

    En effet voici ce que je fais: ss-aaaa -> jj/mm/aaaa puis ss-aaaa à nouveau.
    Je veux donc que la date que je génère à partir de 01-2014 par ex soit forcément reconvertie en 01-2014. Où dois-je modifier pour générer au jeudi?

    Merci d’avance,

    Ostrich95

  2. Hervé Inisan dit :

    Cross > Effectivement, il y a avait un bug dans la fonction. La correction devrait fonctionner maintenant. Merci pour le retour ! 🙂

  3. Cross dit :

    ? DateSemaineFR(2012, 32) puis Entrée.
    Vous obtiendrez la date du 06/08/2012.

    Oui mais le premier jour de la semaine 32 en 2012 est le lundi 05/08/2012 non ?

  4. Hervé Inisan dit :

    akamus > Tu peux, dans ta requête, créer le champ calculé suivant :

    Ensuite, tu peux trier sur ce champ calculé.

  5. akamus dit :

    bonjour
    je veux afficher les resultats d’une table par semaine tell que le premier jour de la semaine et le vendredi , soit par requette ou état
    ( la semaine commance le vendredi et termine le jeudi )
    merci

Laisser un commentaire

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