RETROUVER LE NUMERO DE LA SEMAINE D'UNE DATE DONNÉE

Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
- - Dernière réponse : KaFarD
Messages postés
38
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
29 mai 2008
- 15 mai 2009 à 13:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5253-retrouver-le-numero-de-la-semaine-d-une-date-donnee

Afficher la suite 
KaFarD
Messages postés
38
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
29 mai 2008
-
Solution LIGHT: ( une fonction )

Function WOY (MyDate As Date) As Integer ' Week Of Year
WOY = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If WOY > 52 Then If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) 2 Then WOY 1
End If
End Function

Utilisation:
Mon_numéro_de_semaine = WOY(ma_date)

A+++
Le Docteur
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
4 décembre 2007
-
D'accord, sauf que le bug existe toujours avec les
lundi 29/12/2003 et lundi 31/12/2007 (renvoit semaine 53 au lieu de semaine 1)
grarestephane
Messages postés
34
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 décembre 2009
-
Pas grave ajoute 1, le tour est joué
Le Docteur
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
4 décembre 2007
-
"msgbox DateDiff("w",DateSerial(Year(Date),1,1),Date)"

C'était séduisant, mais...
1 - l'argument pour la semaine est "ww"
2 - il faut utiliser les arguments "firstdayofweek" et "Firstweekofyear"
ce qui donnerait :
DateDiff("ww",DateSerial(Year(Date),1,1),Date,2,2)

Mais malgré ça je n'obtiens jamais la bonne semaine.

pour aujourd'hui, 11/05/2009, j'obtiens la semaine 19 alors que nous sommes en semaine 20 !
grarestephane
Messages postés
34
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 décembre 2009
-
Trève de bavarderie, voilà la réponse, une seule ligne, avec mon msgbox la réponse est direct...

msgbox DateDiff("w",DateSerial(Year(Date),1,1),Date)

Merci d'avoir joué !