Bonjour,
J'ai un probleme en essayant de sommer des valeurs de 4 semaines consécutives au passage d'une année à l'autre.
Je dispose d'une table Tonnages où les champs Client, Volume, numéro de semaine, numéro d'année sont remplis automatiquement à partir d'un fichier excel.
Je traite ensuite les numéros de semaine et d'année afin de générer une date correspondant au premier jour de la semaine avec un module.
J'aimerais ensuite sommer les volumes sur 4 semaines consécutives (en demandant pour l'instant à l'utilisateur d'entrer le numéro de semaine) de l'année N et N-1 (afin de comparer).
Par exemple si l'utilisateur entre "5", la requete va calculer la somme des volumes de la semaine 1 à 4 pour chaque année.
Cela fonctionne pour moi mais je rencontre un problème lorsque la "fenetre" de 4 semaines est sur 2 années.
Ex: si l'utilisateur entre "2", la requete doit calculer la somme des volumes 50/année prec., 51/année prec., 52/année prec et 01/année.
Dans mon cas la requete ne franchit pas la "barrière" entre les 2 années, ne conservant que le volume 01/année.
Quelqu'un peut m'aider?
Voici mon module pour générer la date:
Et voici ma requête:
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 Function convDate( _ ByVal intAnnee As Long, _ Optional ByVal intSemaine As Long = 1) Dim dt As Date ' Trouver le 1er jour de la semaine 1 de l'année ' (pas forcément le 1/1/aaaa en France !) dt = DateSerial(intAnnee, 1, 1) While DatePart("ww", dt, vbMonday, vbFirstFourDays) <> 1 dt = dt + 1 Wend ' Calculer le 1er jour de la semaine demandée dt = dt - DatePart("w", dt, vbMonday) + 1 dt = dt + 7 * (intSemaine - 1) convDate = dt End Function
En vous remerciant d'avance de vos réponses,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Tonnages.Client, Sum(Tonnages.Volume) AS SommeDeVolume, Tonnages.numAnnee FROM Tonnages WHERE Tonnages.tDate>=DateAdd("ww",-4,convDate(Tonnages.numAnnee,[SemaineACalculer])) And Tonnages.tDate<convDate(Tonnages.numAnnee,[SemaineACalculer]) GROUP BY Tonnages.Client, Tonnages.tDate, Tonnages.numAnnee;
Ostrich95
Partager