RENVOI DU NUMÉRO DE SEMAINE (BOGUE DU 29 DÉCEMBRE 2003)

Signaler
Messages postés
39
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2008
-
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
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/20083-renvoi-du-numero-de-semaine-bogue-du-29-decembre-2003

mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
http://www.codyx.org/snippet_calculer-numero-semaine-date_152.aspx


Y'a aussi une soluce (enfin, 2) ici ^^

@++
cs_kadertall
Messages postés
3
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
1 août 2007

svp, quelle est la bonne solution retenue?
fkuchta
Messages postés
44
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
20 novembre 2008

Je suppose que la bogue a été résolue car avec ce code :

Dim JeudiSemaine As Date
Dim NumSemJeudi As Integer
Dim CetteDate As Date
CetteDate = "31/12/2007"
JeudiSemaine = CetteDate - Weekday(CetteDate, vbMonday) + vbThursday - 1
NumSemJeudi = CInt(Format(JeudiSemaine, "ww", vbMonday, vbFirstFourDays))
MsgBox NumSemJeudi & "-" & Weekday(CetteDate, vbMonday)

CetteDate = "29/12/2003"
JeudiSemaine = CetteDate - Weekday(CetteDate, vbMonday) + vbThursday - 1
NumSemJeudi = CInt(Format(JeudiSemaine, "ww", vbMonday, vbFirstFourDays))
MsgBox NumSemJeudi & "-" & Weekday(CetteDate, vbMonday)


J'obtiens toujours semaine 1 partout !!
Certainement un patch quelque part...
cs_buzzo
Messages postés
29
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
30 novembre 2006

Merci beaucoup pour ce source !
JCDussDuss
Messages postés
24
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
20 novembre 2008

Bonjour,

Merci pour cette petite fonction 106, qui fonctionne parfaitement au moins jusqu'en 2015 (je me suis arreté là dans mes tests). Pour ceux qui auraient la flemme d'utiliser cette fonction car ils auraient des dates supérieurs à 2003, sachez que la fonction Format bogue pour le 29/12/2003 mais également pour le 31/12/2007, qu'elle trouve comme seul et unique jour de la semaine 53 (au lieu de 01).

Merci encore.

JC
cs_NoFutur
Messages postés
171
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Je me disais bien que j'avais écrit là ou il fallait pas :o)
fkuchta
Messages postés
44
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
20 novembre 2008

Euh, excuse-moi, mais je ne vois pas l'intérêt : il s'agissait de trouver le numéro de semaine...
;-)
cs_NoFutur
Messages postés
171
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Et pour la date complète il y a aussi :
MsgBox Format("29/12/2003", "Long Date")

Ce qui nous donne au final:
Lundi 29 Décembre 2003
fkuchta
Messages postés
44
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
20 novembre 2008

J'aime beaucoup ce bricolage aussi.
Ahhh, VB quand tu nous tiens !
fkuchta
Messages postés
44
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
20 novembre 2008

J'aime beaucoup ce bricolage aussi.
Ahhh, VB quand tu nous tiens !
ailleolit
Messages postés
2
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
22 février 2004

Super, je cherchais comment resoudre mon probleme: c'est court,simple et efficace.
Merci
106
Messages postés
39
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2008

'J'ai eu le probleme
'Voila ma solution
'en utilisant weekday qui donne le jour de la semaine d'une date
' Ex : 29/12/2003 => Lundi

Public Function NumSemaine(CetteDate As Date)
Dim JeudiSemaine As Date
Dim NumSemJeudi As Integer

JeudiSemaine = CetteDate - Weekday(CetteDate, vbMonday) + vbThursday - 1

NumSemJeudi = CInt(Format(JeudiSemaine, "ww", vbMonday, vbFirstFourDays))

NumSemaine = NumSemJeudi
End Function