Pb n° semaine (date) access

azerty -  
 orwen -
Bonjour,

Je n'arrive pas à récupérer le bon numéro de semaine pour la date du 29/12/2003 : access donne la semaine 53 au lieu de 1.
Auriez-vous une solution à me proposer ?

Merci

7 réponses

mimine
 
bah en recuperant le numero de la semaine (ici 53) tu fait modulo 52 non?
2
azerty
 
Non en fait je dois utiliser la fonction datepart, afin de prendre en compte le premier jour de la semaine (vbfirstdayokweek).
Merci quand même
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

en fait, quand tu cherches des numéros de semaine, il y a une valeur qu'il faut IMPERATIVEMENT renseigner dans ta fonction, c'est la constante firstweekofyear, elle indique comment ACCESS doit calculer la première semaine de l'année :

Est-ce celle qui contient le premier janvier ?
Est-ce celle qui est complète ?
Est-ce celle qui comprend au moins quatre jours ?

C'est un argument de la fonction DatePart (4ième paramètre), mais on n'y pense pas jusqu'à ce qu'on se plante en début (ou en fin) d'année car les données sont incorrectes... :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
azerty > blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bonjour,

Merci pour la réponse.
J'ai déjà essayé tous les paramètres, et seule la date du 29/12/2003 pose problème ?
Est-ce lié à une année bissextile qui suit ?

Merci
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367 > blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention  
 
Elle pose problème avec tous les paramètres ?
Etrange !

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
orwen
 
en faisant un petit tour sur vbfrance.com, je suis tombé sur ce code
Langage : VB6 , VBA
Date ajout : 04/01/2008
Posté par Renfield [Liste]

'# https://fr.wikipedia.org/wiki/ISO_8601#Num.C3.A9ro_de_semaine
Public Function Week(ByVal vDate As Date) As Integer
Dim dThursday As Date
Dim dMonday As Date
Dim nResult As Single
   '# Calculer le jeudi de la même semaine que la date cherchée.
   '# On calculera le numéro de semaine de ce jeudi pour être sûr de compter dans la
   '# bonne année sans test particulier. (Ce jeudi peut tomber l'année précédente ou suivante,
   '# c'est tout l'intérêt.)
   dThursday = DateAdd("D", 4 - Weekday(vDate, vbMonday), vDate)
   
   '# On considère le 4 janvier de la même année que ce jeudi
   dMonday = DateSerial(Year(dThursday), 1, 4)
   
   '# On calcule le lundi de la même semaine que ce 4 janvier (identifiant ainsi le début du comptage;
   '# noter que ce lundi peut lui même tomber l'année encore avant: peu importe)
   dMonday = DateAdd("D", 1 - Weekday(dMonday, vbMonday), dMonday)
   '# On calcule le nombre de jours écoulés entre nos deux dates particulières (ce jeudi et ce lundi).
   '# On divise par 7 (arrondir à l'entier supérieur). On a le résultat voulu.
   nResult = Abs(DateDiff("D", dThursday, dMonday)) / 7
   If Fix(nResult) <> nResult Then
       Week = nResult + 1
   Else
       Week = nResult
   End If
End Function
1
Djool
 
Salut j'ai exactement le même problème.
Semaine: PartDate("ww";[datesaisie];2;2)
La date du 29/12 apparait en semaine 53.
c4est bizarre ce truc!!!
0
azerty
 
Bonjour,

Avez-vous trouvé une solution ?

Merci.
Azerty
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
ben non , c'est normal... C'est bien la 53ième semaine de l'année en cours...
Si tu mets PartDate("ww";[datesaisie]) alors tu auras 53 jusqu'au 31/12 et 1 à partir du 1er de l'an...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
azerty
 
Bonjour,

Pourriez-vous faire un essai, car en 2003 le 29/12/2003 et uniquement cette date crée une semaine 53, alors que les 30 et 31/12/2003 vont bien sur la semaine 1 de 2004 comme attendu ?

Merci.
Azerty
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
J'avais bien fait l'essai, avec la ligne sans les 3ième et 4ième param, et j'ai bien semaine 53 jusqu'au 31/12/2003 et semaine 1 à partir du 01/01/2004

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
mobile75
 
salut
je confirme les propos de Blux
dans une année il y a 53 semaines et non pas 52 car :
52 semaines de 7 jours = 364 j
> il manque 1j,25 ou 2j ( bissext ) pour completer l'année donc S53

dans ma boite meme les polytechniciens n'en demordaient pas , ils voulaient absolument 52s pour 1 année et quand tu fait des stats sur des semaines pleine de 7 j , la derneire semaine de l'année est forcement la 53 eme

prendre la solution de blux sur partdate... si on ne veut pas semaine complete de 7j
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367 > mobile75
 
dans ma boite meme les polytechniciens n'en demordaient pas
C'est vraiment pas un argument ! ;-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0

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

Posez votre question
sof582
 
chercher la fonction prédifini qui permet de convertir une date en jour de la semaine et le N° de la semaine dans une année dans access
0
saab
 
il n y a pas eu de rép pr cette dernière proposition :(
0
blux Messages postés 27989 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Si c'est une proposition, alors elle n'appelle pas de réponse, mais si c'est une question elle appelle à plus de précision pour y répondre....
0