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

  1. mimine
     
    bah en recuperant le numero de la semaine (ici 53) tu fait modulo 52 non?
    2
    1. 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
    2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
      1. azerty > blux Messages postés 2051 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
      2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > blux Messages postés 2051 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
  2. 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
  3. 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
    1. azerty
       
      Bonjour,

      Avez-vous trouvé une solution ?

      Merci.
      Azerty
      0
  4. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
    1. 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
    2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
    3. 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
      1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. saab
     
    il n y a pas eu de rép pr cette dernière proposition :(
    0
  8. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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