OVH Cloud OVH Cloud

DatePart

5 réponses
Avatar
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
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?

5 réponses

Avatar
FxM
Bonsoir,

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




Gil HASH wrote:

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?





Avatar
Frédéric Sigonneau
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 !


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?





Avatar
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.
Avatar
Daniel.M
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.

"Gil HASH" wrote in message
news:
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.




Avatar
Daniel.M
Ou même plus simplement avec Year si tu veux l'utiliser:

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

Salutations (et repos),

Daniel M.