Semaine 52 année 2009

Résolu
keerigan Messages postés 54 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 31 mai 2012 - 5 janv. 2009 à 12:12
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 5 janv. 2009 à 20:30
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2009 à 15:57
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2009 à 13:44
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)
0
keerigan Messages postés 54 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 31 mai 2012
5 janv. 2009 à 14:24
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2009 à 14:35
? 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
keerigan Messages postés 54 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 31 mai 2012
5 janv. 2009 à 14:53
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2009 à 15:11
? datepart("ww", #2008/12/29#,vbmonday,vbFirstJan1)
53


si tu as 53 alors ajoutes 1 à l'année
0
keerigan Messages postés 54 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 31 mai 2012
5 janv. 2009 à 15:21
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2009 à 15:35
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2009 à 15:58
Merci Jack, au fait^^
j'ai fait une fonction qui se base sur ce que dit le Wiki que tu as indiqué
0
keerigan Messages postés 54 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 31 mai 2012
5 janv. 2009 à 16:34
WOOOOOTTTT Merci beaucoup :)

Merciiiiiiiiiii :d
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2009 à 18:06
lol, c'est pas RenField ton pseudo, c'est Luky Luke !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2009 à 20:30
nouvel avatar, nouvelle productivité ^^

enfin, j'ai gardé le même... juste vectorisé
0
Rejoignez-nous