Semaine 52 année 2009 [Résolu]

Signaler
Messages postés
54
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
31 mai 2012
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour,

J'ai un programme qui permet de faire des étiquetages.
Il a besoin entre autre de travailler avec le numéro de semaine et l'année en cours.
Or la semaine dernière j'ai eu un souci: à savoir que nous étions en semaine 1 mais de l'année 2009 et non 2008...J'explique avec l'exemple:

29/12/2008 : Semaine 1 Année 09
02/01/2009 : Semaine 1 Année 09

j'utilise weekday pour récupérer le numéro de semaine mais en utilisant un format de la date je n'arrive pas a avoir ce résultat.(je ne retrouve avec 29/12/2008 comme étant la semaine 1 de l'année 2008)

est ce que quelqu'un aurait une solution pour moi ? afin que cela ne se reproduise plus et que mon prog vive sa vie d'année en année ?

Merci de votre aide

Stéphane

12 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Je te confirme que les 29/30 et 31 décembre 2008 appartiennent à la semaine 1 de 2009.
La norme à ce sujet est complexe puisqu'elle tient compte du calendrier grégorien qui a quelques jours de retard sur celui qu'on utilise.
Définition : La semaine n° 1 de l'année est celle qui inclut le premier jeudi du mois de janvier.
Ainsi, le 1er janvier 2009 était un jeudi, donc semaine 1
Par contre, pour 2010, le 1er janvier tombe un vendredi.
La semaine 1 commencera donc le lundi suivant.
Fais attention : Dans certains calendrirer comme celui de Outlook 2003 (test en cours sur Office 2007), il y a un bug puisqu'il numérote la semaine 1 dès le 1er janvier, ce qui est faux.

Côté programmation VB6, tu parles de "29/12/2008 comme étant la semaine 1 de l'année 2008
"
Tout dépend comment tu as fait ...
WeekDay te fournit le numéro du jour, pas de la semaine.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
54
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
31 mai 2012

Merci de tes précisions et surtout pour la définition de la semaine une :)

en fait je n'avais pas de fonction particulière pour calculer l'année je me contentais d'un  Right(Format(DateProd, "yy"), 1) qui dans le cas du 29/12/2008 me remonte 8 (ce qui m'attriste)

doit on se "palucher" tout le code pour calculer la bonne année en fonction du numéro de semaine , ou esiste t'il une astuce une fonction qui fait ca tres bien ? (dans l'idéal on lui donne une date et elle nous sort le nulmero de semaine et l'annee)

Merci :)

Ps: effectivement je me suis emporté sur le weekday, j'utilise une fonction 'perso' pour avoir mon numéro de semaine
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
? datepart("ww", #2008/12/29#,vbmonday,vbFirstFourDays)
1

? year(#2008/12/29#)
2008


c'est inconcevable de jouer avec Left ou Right (ou Mid, hein) pour récupérer des morceaux de dates. c'est hyper dangereux car ton code ne fonctionnera pas dès lors que les parametres regionnaux changent.

rien ne m'interdit en effet de choisir yyyy-mm-dd par exemple. ton Right$ renverra alors le numéro du jour, pensant récupérer l'année.
Messages postés
54
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
31 mai 2012

Je suis d'accord que le Right n'est pas très "propre" mais je l'améliorerait plus tard...

Tes 2 exemples sont "correct" mais moi ce qui m'intéresse c'est avoir une fonction qui ne donne 01/2009 si je rentre le 29/12/2008 (semaine 1, annee 2009)

Merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
? datepart("ww", #2008/12/29#,vbmonday,vbFirstJan1)
53


si tu as 53 alors ajoutes 1 à l'année
Messages postés
54
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
31 mai 2012

Oui j'y ai pensé mais cette année le 29/12/2009 tombe en semaine 53 , la semaine une débutant le 04/01/2010
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Merci Jack, au fait^^
j'ai fait une fonction qui se base sur ce que dit le Wiki que tu as indiqué
Messages postés
54
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
31 mai 2012

WOOOOOTTTT Merci beaucoup :)

Merciiiiiiiiiii :d
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
lol, c'est pas RenField ton pseudo, c'est Luky Luke !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
nouvel avatar, nouvelle productivité ^^

enfin, j'ai gardé le même... juste vectorisé