Discussion:
DatePart
(trop ancien pour répondre)
Gil HASH
2004-09-02 19:30:41 UTC
Permalink
Bonsoir (Bonjour) à tous
Je manipule souvent les semaines sous la forme Numéro + Année.

Pour convertir les dates en Numéro de semaine + Année, j'ai recours à des
fonctions perso un peu lourdes.
Et puis j'ai découvert DatePart qui me donne immédiatement le numéro de
semaine voulu avec vbMonday et vbFirstFourDays
Je pensais avoir résolu tous mes problèmes jusqu'à ce que je découvre des
problèmes avec l'année :
Autant DatePart("ww",Date,vbMonday,vbFirstFourDays) donne de manière
rigoureuse le numéro de semaine
Mais DatePart("yyyy",Date,vbMonday,vbFirstFourDays) ne donne que l'année de
Date et non l'année de la semaine.
C'est la cause d'erreurs quand la semaine est à cheval sur deux années.

J'ai pas tout saisi sur DatePart, existe-t'il une autre fonction plus juste
pour l'année ou un paramétrage particulier de DatePart?
FxM
2004-09-02 19:41:35 UTC
Permalink
Bonsoir,
Post by Gil HASH
Autant DatePart("ww",Date,vbMonday,vbFirstFourDays) donne de manière
rigoureuse le numéro de semaine
Mieux vaudrait ne pas prendre les paris ...
http://www.google.fr/groups?hl=fr&lr=&ie=UTF-8&selm=uH9pW5b1DHA.2456%40TK2MSFTNGP12.phx.gbl

@+
FxM
Post by Gil HASH
Bonsoir (Bonjour) à tous
Je manipule souvent les semaines sous la forme Numéro + Année.
Pour convertir les dates en Numéro de semaine + Année, j'ai recours à des
fonctions perso un peu lourdes.
Et puis j'ai découvert DatePart qui me donne immédiatement le numéro de
semaine voulu avec vbMonday et vbFirstFourDays
Je pensais avoir résolu tous mes problèmes jusqu'à ce que je découvre des
Autant DatePart("ww",Date,vbMonday,vbFirstFourDays) donne de manière
rigoureuse le numéro de semaine
Mais DatePart("yyyy",Date,vbMonday,vbFirstFourDays) ne donne que l'année de
Date et non l'année de la semaine.
C'est la cause d'erreurs quand la semaine est à cheval sur deux années.
J'ai pas tout saisi sur DatePart, existe-t'il une autre fonction plus juste
pour l'année ou un paramétrage particulier de DatePart?
Frédéric Sigonneau
2004-09-02 21:40:15 UTC
Permalink
Bonsoir,

Lorsqu'une semaine est 'à cheval' sur 2 années, quel résultat attends-tu ?
L'année du lundi ou du dimanche, selon numéro de semaine (l'année du demanche si
c'est 1 par exemple, celle du lundi dans les autres cas) ? Les deux (genre
'2004-2005') ?

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !
Post by Gil HASH
Bonsoir (Bonjour) à tous
Je manipule souvent les semaines sous la forme Numéro + Année.
Pour convertir les dates en Numéro de semaine + Année, j'ai recours à des
fonctions perso un peu lourdes.
Et puis j'ai découvert DatePart qui me donne immédiatement le numéro de
semaine voulu avec vbMonday et vbFirstFourDays
Je pensais avoir résolu tous mes problèmes jusqu'à ce que je découvre des
Autant DatePart("ww",Date,vbMonday,vbFirstFourDays) donne de manière
rigoureuse le numéro de semaine
Mais DatePart("yyyy",Date,vbMonday,vbFirstFourDays) ne donne que l'année de
Date et non l'année de la semaine.
C'est la cause d'erreurs quand la semaine est à cheval sur deux années.
J'ai pas tout saisi sur DatePart, existe-t'il une autre fonction plus juste
pour l'année ou un paramétrage particulier de DatePart?
Gil HASH
2004-09-03 04:00:56 UTC
Permalink
Merci à FxM pour m'avoir dirigé sur ce message concernant DatePart j'étais
loin de me douter des bugs sur le numéro de semaine.
Par contre mon problème reste entier concernant l'année car je veux l'année
de la semaine et non celle du jour.
En fait DatePart( ) pour l'année est l'équivalent de Year( ) ce qui est
gênant.
Daniel.M
2004-09-03 06:04:29 UTC
Permalink
Salut Jean-Luc,

Pour une date X, le jeudi de la même semaine que cette date sera TOUJOURS dans
la bonne année ISO (en vertu de la définition ISO des semaines).

Donc:
DatePart("yyyy",X-Weekday(X-1)+4,vbMonday,vbFirstFourDays)

Tu remplaces X par Date si tu veux le savoir pour aujourd'hui (comme dans tes
exemples).

Salutations,

Daniel M.
Post by Gil HASH
Merci à FxM pour m'avoir dirigé sur ce message concernant DatePart j'étais
loin de me douter des bugs sur le numéro de semaine.
Par contre mon problème reste entier concernant l'année car je veux l'année
de la semaine et non celle du jour.
En fait DatePart( ) pour l'année est l'équivalent de Year( ) ce qui est
gênant.
Daniel.M
2004-09-03 06:08:43 UTC
Permalink
Ou même plus simplement avec Year si tu veux l'utiliser:

MsgBox Year(X-Weekday(X-1)+4)

Salutations (et repos),

Daniel M.
Gil HASH
2004-09-03 15:58:45 UTC
Permalink
Continuer la lecture sur narkive:
Loading...