DatePart bug? [Résolu]

Jomba 58 Messages postés mercredi 2 novembre 2005Date d'inscription 22 juillet 2010 Dernière intervention - 16 janv. 2008 à 12:02 - Dernière réponse : Jomba 58 Messages postés mercredi 2 novembre 2005Date d'inscription 22 juillet 2010 Dernière intervention
- 16 janv. 2008 à 14:24
bonjour,
j'utilise dans un de mes programmes la fonction datepart :
Dim

test AsInteger

test = DatePart(DateInterval.WeekOfYear, CDate("31/12/2007"), Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.FirstFourDays)

Dans le test que je vous ai copié ci-dessus, j'ai la date du 31 dé&cembre 2007 dont je cherche à récupérer le numéro de semaine : elle me ressort semaine 53 au lieu de 1 (1ère semaine de 2008).
Pourtant, j'ai bien spécifé "
FirstFourDays".
Est-ce un bug de la fonction ou un paramétrage raté ou ...?
Ca fait 2 ans que j'utilise cette fonction sans problème à part ça...

Merci d'avance,
Jomba
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Jomba 58 Messages postés mercredi 2 novembre 2005Date d'inscription 22 juillet 2010 Dernière intervention - 16 janv. 2008 à 14:16
3
Merci
je vous remercie de vos réponses mais ce que je voulais savoir, c'était surtout si c'était moi ou vb.net2005 qui faisait une erreur. Et apparement, c'est vb.
J'ai résolu mon problème en  positionnant ma date sur le jeudi, ainsi, ça marche à tous les coups, quelle que soit la date donnée.

DatePart(DateInterval.WeekOfYear, DateAdd(DateInterval.Day, 4 - DatePart(DateInterval.Weekday,CDate("31/12/2007") ),CDate("31/12/2007") ),Microsoft.VisualBasic.FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)

Merci Jomba 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de Jomba
NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention - 16 janv. 2008 à 12:17
0
Merci
Bonjour

VB doit (je pense) remettre son compteur à "0" lors du changement d'année, il est facile d'éviter d'avoir la semaine 53 :
test = DatePart(DateInterval.WeekOfYear, CDate("31/12/2007"), Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.FirstFourDays) mod 53

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Commenter la réponse de NHenry
NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention - 16 janv. 2008 à 12:17
0
Merci
Bonjour

REMARQUE,
if test=0 then test=1
(53 mod 53=0)

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Commenter la réponse de NHenry
Jomba 58 Messages postés mercredi 2 novembre 2005Date d'inscription 22 juillet 2010 Dernière intervention - 16 janv. 2008 à 12:31
0
Merci
merci pour ta solution mais je ne pense pas qu'il remette le compteur à 0 car en mettant la date au 1 er janvier 2008, je récupère bien la semaine 1
Commenter la réponse de Jomba
NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention - 16 janv. 2008 à 12:46
0
Merci
Bonjour

Oui, mais en mettant "Mod 53" à la fin de ta ligne, le 31/12/2007 fera parti de la semaine 0 ...

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Commenter la réponse de NHenry
cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 16 janv. 2008 à 13:57
0
Merci
 Bonjour à tous,

Effectivement le DatePart renvoie semaine 53.

Alternative à adapter pour .Net :

MsgBox JoursDeLaSemaine1(2008)

Public Function JoursDeLaSemaine1(annee)
    Dim d, i, MaSemaine
    d = DateSerial(annee, 1, 1)
    ' calcul du premier jour de la première semaine de l'année
    d = DateAdd("d", 1 - Weekday(d, vbMonday), d)

    MaSemaine = "Jours de la semaine 1" &vbcr
    For  i =0 To 6
         MaSemaine = MaSemaine &vbCr& DateAdd("d", i, d)
    Next
    JoursDeLaSemaine1 = MaSemaine
End Function

jean-marc
Commenter la réponse de cs_JMO
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 janv. 2008 à 14:14
0
Merci
les règles sont exposées ici :
http://fr.wikipedia.org/wiki/ISO_8601#Num.C3.A9ro_de_semaine

dans ce Snippet:
http://www.codyx.org/snippet_recuperer-numero-semaine_61.aspx#401

j'ai codé en VB6 l'algo exposé sur Wiki
mais des codes en .Net sont dispo sur cette page de Codyx.
Commenter la réponse de Renfield
Jomba 58 Messages postés mercredi 2 novembre 2005Date d'inscription 22 juillet 2010 Dernière intervention - 16 janv. 2008 à 14:24
0
Merci
j'oubliais, je ne prend pas le mod 53 comme solution car il peut arriver que la semaine 53 existe (quand le 31 décembre tombe un jeudi)

Merci à vous tous et à une prochaine
Commenter la réponse de Jomba

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.