Pb n° semaine (date) access
azerty
-
orwen -
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
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
-
-
-
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"
-
-
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
-
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!!! -
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"
-
-
-
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
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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
-
-
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....