IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Problème de date [FAQ]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Points : 65
    Points
    65
    Par défaut Problème de date
    Bonjour,

    Je rencontre actuellement un petit soucis sous Access.

    En gros je veux réaliser la restriction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE 
    (DatePart('yyyy',PF_DAT_DEBUT,2,2)*100+DatePart('ww',PF_DAT_DEBUT,2,2))>=[DEBUT]
    Dans mon cas :
    La date de début PF_DAT_DEBUT est : 29/12/2008
    et la variable début correspond à une valeur égale à 200835.

    J'ai pas le choix, ces valeurs sont saisies telles quelles par les utilisateurs.

    Mon soucis c'est que le premier Datepart me renvoie la valeur de l'année : 2008
    Et le deuxième la semaine ... 01
    Donc en gros le convert de ma date format dd/mm/yyyy en yyyyss me donne 200801 ce qui est complètement faux.

    je suis pas très douée sous Access j'avoue et je sais pas trop me dépatouiller. Autant sous oracle j'aurais comparé par ex la valeur du Dimanche mais sous Access

    Merci pour vos réponses

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Ton problème vient des paramètres que tu as positionné. En effet, tes choix ont fait que le 29/12/2008 était dans la 1ère semaine de l'année 2009

    Si tu n'utilises aucun paramètre,Access considèrera que le 29/12/08 fait partie de la semaine 53 !

    d'où le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE 
    (DatePart('yyyy',PF_DAT_DEBUT)*100+DatePart('ww',PF_DAT_DEBUT))>=[DEBUT]
    J'en profite pour te conseiller un excellent article : Les fonctions Date dans Access

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    coucou Jeannot45 et coucou_tt_le_monde,

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    format(PF_DAT_DEBUT,"yyyyww")

    merci Jeannot45 pour le lien, effectivement c'est à conseiller.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par vodiem Voir le message
    coucou Jeannot45 et coucou_tt_le_monde,

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    format(PF_DAT_DEBUT,"yyyyww")

    merci Jeannot45 pour le lien, effectivement c'est à conseiller.
    Merci pour vos réponses et pour le lien!!

    Par contre j'ai déjà essayé le code cité ci dessus mais ça ne fonctionnait pas, je vais retenter

    N'empêche qu'il me semble que les paramètres n'ont pas été positionnés au hasard ... faudrait pas que l'appli plante avec des années de 53 semaines ... je vais tester tout ça tout à l'heure et vous redis

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bon dimanche

    essayes avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatePart("yyyy", PF_DAT_DEBUT) & DatePart("ww", PF_DAT_DEBUT)
    chez moi sur un test fontion il ressort bien 200853, et non pas 200835 je suppose que c'est une faute de frappe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function semaine2()
    PF_DAT_DEBUT = #12/29/2008#
    var = DatePart("yyyy", PF_DAT_DEBUT) & DatePart("ww", PF_DAT_DEBUT)
     
    Debug.Print var
     
     
    End Function
    a +

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Qu'on utilise DatePart ou Format, l'année et la semaine sont extraits séparements.
    D'où les incohérences sur la semaine à cheval sur deux années.

    Par ailleurs il semble y avoir un bug dans le numéro de semaine.
    On peut avoir des semaines 53 de moins de 7 jours.

    Je ne vois pas mieux qu'une fonction vba dans laquelle on pourra coder le choix de l'année en fonction du numéro de semaine et du numéro de mois.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Function AnneeSemaine(Dt As Date) As Long
    Dim wk As Long, Annee As Long
     
    wk = DatePart("ww", Dt, vbMonday, vbFirstFourDays)
     
    ' Correction Semaine 53
    If wk = 53 Then
        ' Ont 53 semaines :
        '  * Les années dont le 1er janvier est un jeudi
        '  * Les années bissextiles dont le 1er janvier est un mercredi
        '  ==> année suivant une année à 53 semeaines
        '      commence un vendredi ou un samedi
        Annee = Year(Dt): If Month(Dt) = 12 Then Annee = Annee + 1
       'Si 1/1 est dim,lun,mar,mer,jeu alors année-1 n'a pas 53 semaines
       If Weekday(DateSerial(Annee, 1, 1), vbSunday) < 6 Then
          wk = 1
       End If
    End If
     
    'Année
    Annee = Year(Dt)
    If Month(Dt) = 12 And wk = 1 Then
       Annee = Annee + 1
    ElseIf Month(Dt) = 1 And wk > 51 Then
       Annee = Annee - 1
    End If
    AnneeSemaine = Annee * 100 + wk
    End Function
    A+

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Par ailleurs il semble y avoir un bug dans le numéro de semaine.
    -> http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
    N.B. Several Microsoft programs (such as Access 2000 and Excel 2000) support a week numbering scheme through the WEEKNUM function that can be set to number weeks starting either on Sunday or on Monday. Note that the Microsoft week numbers are not always the same as the ISO week numbers. Microsoft defines the first week in the year as the week that contains the 1st of January.
    Une fonction de test qui semble valider la fonction de ledzepp2 pour la détermination des années en 53 semaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Public Function TestProchainesAnneesAvec53Semaines()
    Dim s As String, asAnneesAvec53Semaines() As String
    Dim i As Long, j As Integer
    s = "2009," & _
    "2015,2020,2026,2032,2037,2043,2048,2054,2060,2065,2071,2076,2082,2088,2093,2099,2105,2111,2116,2122,2128,2133,2139,2144,2150,2156,2161,2167,2172,2178,2184,2189,2195,2201,2207,2212,2218,2224,2229,2235,2240,2246,2252,2257,2263,2268,2274,2280,2285,2291,2296,2303,2308,2314,2320,2325,2331,2336,2342,2348,2353,2359,2364,2370,2376,2381,2387,2392,2398,2404,2409,2415,2420,2426,2432,2437,2443,2448,2454,2460," & _
    "2465,2471,2476,2482,2488,2493,2499,2505,2511,2516,2522,2528,2533,2539,2544,2550,2556,2561,2567,2572,2578,2584,2589,2595,2601,2607,2612,2618,2624,2629,2635,2640,2646,2652,2657,2663,2668,2674,2680,2685,2691,2696,2703,2708,2714,2720,2725,2731,2736,2742,2748,2753,2759,2764,2770,2776,2781,2787,2792,2798,2804,2809,2815,2820,2826,2832,2837,2843,2848,2854,2860,2865,2871,2876,2882,2888,2893,2899,2905,2911," & _
    "2916,2922,2928,2933,2939,2944,2950,2956,2961,2967,2972,2978,2984,2989,2995,3001,3007,3012,3018,3024,3029,3035,3040,3046,3052,3057,3063,3068,3074,3080,3085,3091,3096,3103,3108,3114,3120,3125,3131,3136,3142,3148,3153,3159,3164,3170,3176,3181,3187,3192,3198,3204,3209,3215,3220,3226,3232,3237,3243,3248,3254,3260,3265,3271,3276,3282,3288,3293,3299,3305,3311,3316,3322,3328,3333,3339,3344,3350,3356,3361," & _
    "3367,3372,3378,3384,3389,3395,3401,3407,3412,3418,3424,3429,3435,3440,3446,3452,3457,3463,3468,3474,3480,3485,3491,3496,3503,3508,3514,3520,3525,3531,3536,3542,3548,3553,3559,3564,3570,3576,3581,3587,3592,3598,3604,3609,3615,3620,3626,3632,3637,3643,3648,3654,3660,3665,3671,3676,3682,3688,3693,3699,3705,3711,3716,3722,3728,3733,3739,3744,3750,3756,3761,3767,3772,3778,3784,3789,3795,3801,3807,3812," & _
    "3818,3824,3829,3835,3840,3846,3852,3857,3863,3868,3874,3880,3885,3891,3896,3903,3908,3914,3920,3925,3931,3936,3942,3948,3953,3959,3964,3970,3976,3981,3987,3992,3998,4004,4009,4015,4020,4026,4032,4037,4043,4048,4054,4060,4065,4071,4076,4082,4088,4093,4099,4105,4111,4116,4122,4128,4133,4139,4144,4150,4156,4161,4167,4172,4178,4184,4189,4195,4201,4207,4212,4218,4224,4229,4235,4240,4246,4252,4257,4263," & _
    "4268,4274,4280,4285,4291,4296,4303,4308,4314,4320,4325,4331,4336,4342,4348,4353,4359,4364,4370,4376,4381,4387,4392,4398,4404,4409,4415,4420,4426,4432,4437,4443,4448,4454,4460,4465,4471,4476,4482,4488,4493,4499,4505,4511,4516,4522,4528,4533,4539,4544,4550,4556,4561,4567,4572,4578,4584,4589,4595,4601,4607,4612,4618,4624,4629,4635,4640,4646,4652,4657,4663,4668,4674,4680,4685,4691,4696,4703,4708,4714," & _
    "4720,4725,4731,4736,4742,4748,4753,4759,4764,4770,4776,4781,4787,4792,4798,4804,4809,4815,4820,4826,4832,4837,4843,4848,4854,4860,4865,4871,4876,4882,4888,4893,4899,4905,4911,4916,4922,4928,4933,4939,4944,4950,4956,4961,4967,4972,4978,4984,4989,4995,5001,5007,5012,5018,5024,5029,5035,5040,5046,5052,5057,5063,5068,5074,5080,5085,5091,5096,5103,5108,5114,5120,5125,5131,5136,5142,5148,5153,5159,5164," & _
    "5170,5176,5181,5187,5192,5198,5204,5209,5215,5220,5226,5232,5237,5243,5248,5254,5260,5265,5271,5276,5282,5288,5293,5299,5305,5311,5316,5322,5328,5333,5339,5344,5350,5356,5361,5367,5372,5378,5384,5389,5395,5401,5407,5412,5418,5424,5429,5435,5440,5446,5452,5457,5463,5468,5474,5480,5485,5491,5496,5503,5508,5514,5520,5525,5531,5536,5542,5548,5553,5559,5564,5570,5576,5581,5587,5592,5598,5604,5609,5615," & _
    "5620,5626,5632,5637,5643,5648,5654,5660,5665,5671,5676,5682,5688,5693,5699,5705,5711,5716,5722,5728,5733,5739,5744,5750,5756,5761,5767,5772,5778,5784,5789,5795,5801,5807,5812,5818,5824,5829,5835,5840,5846,5852,5857,5863,5868,5874,5880,5885,5891,5896,5903,5908,5914,5920,5925,5931,5936,5942,5948,5953,5959,5964,5970,5976,5981,5987,5992,5998,6004,6009,6015,6020,6026,6032,6037,6043,6048,6054,6060,6065," & _
    "6071,6076,6082,6088,6093,6099,6105,6111,6116,6122,6128,6133,6139,6144,6150,6156,6161,6167,6172,6178,6184,6189,6195,6201,6207,6212,6218,6224,6229,6235,6240,6246,6252,6257,6263,6268,6274,6280,6285,6291,6296,6303,6308,6314,6320,6325,6331,6336,6342,6348,6353,6359,6364,6370,6376,6381,6387,6392,6398,6404,6409,6415,6420,6426,6432,6437,6443,6448,6454,6460,6465,6471,6476,6482,6488,6493,6499,6505,6511,6516," & _
    "6522,6528,6533,6539,6544,6550,6556,6561,6567,6572,6578,6584,6589,6595,6601,6607,6612,6618,6624,6629,6635,6640,6646,6652,6657,6663,6668,6674,6680,6685,6691,6696,6703,6708,6714,6720,6725,6731,6736,6742,6748,6753,6759,6764,6770,6776,6781,6787,6792,6798,6804,6809,6815,6820,6826,6832,6837,6843,6848,6854,6860,6865,6871,6876,6882,6888,6893,6899,6905,6911,6916,6922,6928,6933,6939,6944,6950,6956,6961,6967," & _
    "6972,6978,6984,6989,6995,7001,7007,7012,7018,7024,7029,7035,7040,7046,7052,7057,7063,7068,7074,7080,7085,7091,7096,7103,7108,7114,7120,7125,7131,7136,7142,7148,7153,7159,7164,7170,7176,7181,7187,7192,7198,7204,7209,7215,7220,7226,7232,7237,7243,7248,7254,7260,7265,7271,7276,7282,7288,7293,7299,7305,7311,7316,7322,7328,7333,7339,7344,7350,7356,7361,7367,7372,7378,7384,7389,7395,7401,7407,7412,7418," & _
    "7424,7429,7435,7440,7446,7452,7457,7463,7468,7474,7480,7485,7491,7496,7503,7508,7514,7520,7525,7531,7536,7542,7548,7553,7559,7564,7570,7576,7581,7587,7592,7598,7604,7609,7615,7620,7626,7632,7637,7643,7648,7654,7660,7665,7671,7676,7682,7688,7693,7699,7705,7711,7716,7722,7728,7733,7739,7744,7750,7756,7761,7767,7772,7778,7784,7789,7795,7801,7807,7812,7818,7824,7829,7835,7840,7846,7852,7857,7863,7868," & _
    "7874,7880,7885,7891,7896,7903,7908,7914,7920,7925,7931,7936,7942,7948,7953,7959,7964,7970,7976,7981,7987,7992,7998,8004,8009,8015,8020,8026,8032,8037,8043,8048,8054,8060,8065,8071,8076,8082,8088,8093,8099,8105,8111,8116,8122,8128,8133,8139,8144,8150,8156,8161,8167,8172,8178,8184,8189,8195,8201,8207,8212,8218,8224,8229,8235,8240,8246,8252,8257,8263,8268,8274,8280,8285,8291,8296,8303,8308,8314,8320," & _
    "8325,8331,8336,8342,8348,8353,8359,8364,8370,8376,8381,8387,8392,8398,8404,8409,8415,8420,8426,8432,8437,8443,8448,8454,8460,8465,8471,8476,8482,8488,8493,8499,8505,8511,8516,8522,8528,8533,8539,8544,8550,8556,8561,8567,8572,8578,8584,8589,8595,8601,8607,8612,8618,8624,8629,8635,8640,8646,8652,8657,8663,8668,8674,8680,8685,8691,8696,8703,8708,8714,8720,8725,8731,8736,8742,8748,8753,8759,8764,8770," & _
    "8776,8781,8787,8792,8798,8804,8809,8815,8820,8826,8832,8837,8843,8848,8854,8860,8865,8871,8876,8882,8888,8893,8899,8905,8911,8916,8922,8928,8933,8939,8944,8950,8956,8961,8967,8972,8978,8984,8989,8995,9001,9007,9012,9018,9024,9029,9035,9040,9046,9052,9057,9063,9068,9074,9080,9085,9091,9096,9103,9108,9114,9120,9125,9131,9136,9142,9148,9153,9159,9164,9170,9176,9181,9187,9192,9198,9204,9209,9215,9220," & _
    "9226,9232,9237,9243,9248,9254,9260,9265,9271,9276,9282,9288,9293,9299,9305,9311,9316,9322,9328,9333,9339,9344,9350,9356,9361,9367,9372,9378,9384,9389,9395,9401,9407,9412,9418,9424,9429,9435,9440,9446,9452,9457,9463,9468,9474,9480,9485,9491,9496,9503,9508,9514,9520,9525,9531,9536,9542,9548,9553,9559,9564,9570,9576,9581,9587,9592,9598,9604,9609,9615,9620,9626,9632,9637,9643,9648,9654,9660,9665,9671," & _
    "9676,9682,9688,9693,9699,9705,9711,9716,9722,9728,9733,9739,9744,9750,9756,9761,9767,9772,9778,9784,9789,9795,9801,9807,9812,9818,9824,9829,9835,9840,9846,9852,9857,9863,9868,9874,9880,9885,9891,9896,9903,9908,9914,9920,9925,9931,9936,9942,9948,9953,9959,9964,9970,9976,9981,9987,9992,9998"
    asAnneesAvec53Semaines = Split(s, ",")
    For i = 2009 To 9999
       If AnneeSemaine(DateSerial(i, 12, 31)) = i * 100 + 53 Then
          If val(asAnneesAvec53Semaines(j)) <> i Then
             Debug.Print "Erreur pour l'année : " & i
          End If
          j = j + 1
       End If
       DoEvents
    Next i
    Debug.Print "Fin du test"
    End Function
    Source années avec 53 semaines : http://henry.pha.jhu.edu/calendarDir/newton.html

    Philippe

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Une fonction de test qui semble valider la fonction de ledzepp2 pour la détermination des années en 53 semaines
    On est peinard jusqu'en 9999 alors ?
    Je n'avais vérifié ma fonction que jusqu'à fin 2051 début 2052.

    En tout cas merci pour les liens. A+

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    On est peinard jusqu'en 9999 alors ?
    J'ai ajouté un rappel dans Outlook pour cette date...

    Philippe

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    merci philben pour ces liens instructifs,

    je n'ai malheureusement pas assez assimilé le concept pour comprendre les formules.
    quelques recherche mon permis de comprendre que la distribution des 71 valeurs sur la période de 400 n'était pas si évidente que cela, étant donné que le pgcd(400,71)=1 redistribuer les valeurs de façon équitable relève d'un choix humain. d'ailleurs à en voir le graph des variations 5-6 je me suis aperçu qu'il n'était pas très harmonieux avec un pic de 7 bizarrement au 3/4...

    enfin, si cela va m'empêcher de dormir, cela ne m'empêchera pas de mourir: 9999...

    je vous souhaite: longue vie
    ps: penser à changer le fleurs de ma tombe, merci.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bojour à tous,
    après avoir répondu un peu vite, même si la fonction est correcte, je me suis aperçu, en testant puis en voyant vos posts que ce n'était pas aussi simple.
    heureusement que notre ami ne nous a pas fait coucou
    car la réponse est en fait 200901

    j'ai fait la connaissance de Bug Oleaut32.dll, qui ne veut pas respecter notre norme,
    pour alimenter, j'ai transposé des solutions trouvées et testé avec les progs suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Function AffDate()
    For i = 2008 To 9999
    MaDate = "31/12/" & i
     NumSem (MaDate)
     Next i
    End Function
     
     
    Function NumSem(MaDate As Date) As String
     
        Dim NoSemaine As Integer
        Dim NoAnnee As Integer
        If Not IsDate(MaDate) Then
            NumSem = ""
        Else
            NoSemaine = Format(MaDate, "ww", vbMonday, vbFirstFourDays)
                If NoSemaine = 53 Then
                If Format(MaDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
                    NoSemaine = 1
                End If
            End If
     
            Select Case NoSemaine
            'Affecter la semaine 1 de fin d'année au début de l'année suivante
            Case 1
                If Month(MaDate) = 12 Then
                    NoAnnee = Year(MaDate) + 1
                Else
                    NoAnnee = Year(MaDate)
                End If
            Case Is < 52
                NoAnnee = Year(MaDate)
            'Affecter la semaine 52 ou 53 de début d'année à la fin d'année précédente
            Case Is >= 52
                If Month(MaDate) = 1 Then
                    NoAnnee = Year(MaDate) - 1
                Else
                    NoAnnee = Year(MaDate)
                End If
            End Select
            NumSem = NoAnnee & "/" & Format(NoSemaine, "00")
       End If
    If NoSemaine = 53 Then
    Debug.Print MaDate; " "; NoAnnee; " "; NoSemaine
    End If
    End Function
    Les résultats semblent confirmer ceux de Philben, j'ai transposé à excel car le débug n'a pas voulu tout m'imprimer.
    il y aurait 1419 occurences !!!!
    comme je n'ai pas tout a fait confiance, j'ai décidé de vérifier chaque année, maintenant un peu plus ou moins vieux çà n'a plus d'importance.
    donc Vodiem je m'engage à aller changer les fleurs sur ta tombe, simplement dis moi celles que tu préfères.
    Mais on a le temps ++++,
    longue vie à tous on a besoins de vous.
    réflexion d'égoîste je sais!!!!

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour ,

    LE VIEUX, ta fonction semble passer aussi le test

    Il serait pas mal de graver dans la FAQ la fonction de LedZepp2 pour 2 raisons :
    • Le nombre de semaines ISO par an n'y est pas;
    • De marquer cette différence constatée entre la norme ISO et la norme "Microsoft" (Pas testé avec Access 2007).
    Philippe

  13. #13
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir, bonne idée
    Tout est OK, j'ai tout testé sur 2007, si ça interesse quelqu'un, ci joint un fichier Exel "plus facile visuel" qui compare les 3 résultats

  14. #14
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup pour toutes vos réponses!
    Sans vouloir être ingrate, mon soucis se situe dans une requête SQL donc je ne peux pas implémenter cette fonction ....

    J'avais choisi d'enlever les 2,2 dans la fonction Datepart, la personne qui a fait les développements avait testé ...

    Et là on s'aperçoit que sur le 22 février 2009 la fonction
    Datepart('22/02/2009') renvoie 200909
    et la fonction DatePart('22/02/2009',2,2) renvoie 200908

    Pfff ... je pensais que la différence se jouait sur le début et la fin d'année pas au beau milieu. Je ne sais plus quoi faire!!

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonsoir,
    c'est vrai quelle ingrate !!!!
    enfin on est gentil...... pour te prouver qu'on est pas rancunier encore un petit effort
    ci joint un bout de base qui te montre comment intégrer la function de LedZeppII dans une requête
    bon courage à +

Discussions similaires

  1. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  2. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  3. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo