Bonjour.
Désolé je ne suis pas ton calcul alors je vais te faire une réponse générique pour Access.
Contrairement à Excel, Access n'a pas la notion de ligne précédente ou suivante donc faire A2=A1+1 en Access s'avère pas mal plus compliqué.
En Access, il faut faire la somme de tous les éléments que tu veux additionner et cela avec un critère de sélection.
Ici un exemple de total à date :
Date Qte |
Qte |
Total Qte |
2021-04-01 |
10 |
10 |
2021-04-02 |
20 |
30 |
2021-04-03 |
30 |
60 |
Prenons la ligne 2021-04-03, et bien on n'a pas fait la somme du total précédent et de la quantité de la ligne (30 + 30). On fait la somme de toutes les quantités dont la date est inférieure ou égale à 2021-04-03 (10 + 20 + 30).
Cela peut se coder comme ceci dans une requête basée sur MaTableDateQte.
To=DSum("Qte"; "MaTableDateQte"; "[DateQte]<=#" format([MaTableDateQte].[DateQte]; "aaaa-mm-jj") & "#")
- Access va traduire DSum en français pour toi.
- Le # est pour indiquer à Access qu'il va recevoir une date.
- "[DateQte]<=#" format([MaTableDateQte].[DateQte]; "aaaa-mm-jj") & "#" indique à Access qu'il doit considérer tous les enregistrements (ligne) jusqu'à la date de l'enregistrement courant.
- Le format([MaTableDateQte].[DateQte]; "aaaa-mm-jj") force Access à mettre la date dans l'ordre : année, mois, jour.
Ce n'est pas indispensable mais j'ai appris avec l'expérience que cela évite à Access de confondre le mois et le jour pour les dates du type 01/02/2021 et donc de lire le 2 janvier au lieu du 1er février.
Ce danger est particulièrement présent si tu travailles comme moi dans un environnement multilingue où les conventions pour les dates ne sont pas les même en Anglais (MM/JJ/AAAA) et Français (JJ/MM/AAAA).
Attention si tu as beaucoup de données ce calcul peut prendre du temps ... dans ce cas là il faut s'orienter vers une table temporaire et du code VBA mais c'est une toute autre histoire.
Autre gros défaut de cette solution c'est que cela te prend un critère de sélection et que parfois on n'en a pas.
On peut parfois ajouter un champ Autonum (Numéo Auto) qui va attribuer un numéro croissant aux enregistrements mais il n'y a pas de réponse universelle à ce problème.
Et en règle générale quand tu te dis qu'il va falloir faire une boucle, tu peux souvent résoudre le problème avec une requête ce qui est habituellement plus performant que de faire du code VBA.
A+
Partager