3.3 · Cumuls en cours d'exécution (Running Total)

Niveau 3 · Avancé : formules & mise en forme conditionnelle

3.3Cumuls en cours d'exécution (Running Total)

Objectif : créer un champ de cumul qui progresse ligne après ligne, avec la bonne réinitialisation (jamais / par groupe / sur formule).
Temps estimé : 10 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Résumé = total final, cumul = total qui monte : le résumé (2-2) donne UN total à la fin ; le cumul en cours d'exécution affiche le total intermédiaire à chaque ligne (solde progressif, total à ce jour).
  • Le réglage crucial, c'est le Reset : jamais (cumul global sur tout le rapport), par groupe (repart de zéro par client/compte), ou sur formule — il donne son sens au cumul.
  • Un cumul dépend de l'ordre : il additionne dans l'ordre d'affichage — trier les lignes d'abord (par date pour un relevé), sinon les soldes intermédiaires n'ont aucun sens.

Mini-cas filé — Farès sort le relevé progressif par client

Farès, contrôleur de gestion à Alger, doit fournir à chaque commercial le relevé de ses clients avec le solde APRÈS chaque facture — pas seulement le total final. Il crée un champ de cumul (explorateur → Running Total Fields) : champ Montant en Somme, évalué pour chaque enregistrement, réinitialisé à chaque changement de groupe Client, lignes triées par date. Chaque ligne affiche désormais le solde cumulé à cette date, repartant de zéro pour chaque client. Les commerciaux suivent l'évolution au lieu de découvrir le total à la fin.

Ce même cas revient dans le cours, le schéma, le script et le défi 48h.

1. Cumul contre résumé : le total qui progresse

Un besoin que les résumés classiques ne couvrent pas : le CUMUL EN COURS D'EXÉCUTION (Running Total) — une somme (ou un compte) qui s'ACCUMULE ligne après ligne, affichant le total « à cette ligne ». Exemples : solde progressif d'un relevé de compte (chaque ligne montre le solde après l'opération), total « à ce jour », cumul de classement. Là où un résumé donne UN total à la fin d'un groupe ou du rapport, le cumul donne le total INTERMÉDIAIRE à CHAQUE ligne, en progressant.

Crystal Reports fournit un outil dédié : les champs de cumul (Running Total Fields), créés dans l'explorateur. On y définit trois choses : (1) le CHAMP à cumuler et l'OPÉRATION (Somme, Nombre…) ; (2) la CONDITION d'évaluation (pour chaque enregistrement, ou sous condition — n'ajouter que certaines lignes) ; (3) surtout la condition de RÉINITIALISATION (Reset) — quand remettre le cumul à zéro. Le cumul s'affiche dans la section Détails (le total à chaque ligne) ou dans un pied (le cumul final).

2. La réinitialisation : le réglage qui fait tout

Trois choix de Reset, trois sens différents. Ne jamais réinitialiser : le cumul court sur TOUT le rapport, du début à la fin — un total global qui monte continûment (solde général progressif). Réinitialiser à chaque changement de GROUPE : le cumul repart de zéro pour chaque groupe — un solde progressif PAR client, PAR compte (le cas de Farès). Réinitialiser sur une FORMULE : condition personnalisée pour les cas spéciaux. Bien régler la réinitialisation, c'est la différence entre un cumul correct et un total incohérent.

Deux vigilances. D'abord l'ORDRE des lignes : un cumul additionne dans l'ordre d'affichage — des lignes non triées (par date pour un relevé) donnent des soldes intermédiaires absurdes alors que le total final semble bon. Ensuite les doublons de jointure (niveau 0) : comme pour les résumés, des lignes multipliées gonflent le cumul — et les conditions d'évaluation inadaptées (ajouter trop ou pas assez de lignes). En cas d'incohérence : vérifier l'ordre, puis le Reset, puis la condition d'évaluation, dans cet ordre.

Erreur d'interprétation fréquente : « Un cumul, c'est un résumé placé dans les Détails — et l'ordre des lignes n'a pas d'importance ». Non, deux fois. Un résumé dans les Détails répète la même valeur finale à chaque ligne ; un cumul recalcule un total PARTIEL qui grandit — deux objets différents. Et l'ordre est vital : additionner dans le désordre, c'est raconter une progression fausse avec un total final juste. Trier d'abord, cumuler ensuite.
Monter un cumul correct Champ, évaluation, réinitialisation, ordre Trier d'abord Lignes dansl'ordre (date, séquence)Champ de cumul Champ + Somme +condition d'évaluationReset selon l'intention Jamais(global) ou par groupeVérifier en aperçu Progresseet repart comme prévu
Champ, évaluation, réinitialisation, ordre
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Ordre : Farès trie ses lignes par date, car un relevé se lit chronologiquement. 2) Cumul : champ Montant en Somme, évalué pour chaque enregistrement, affiché dans les Détails. 3) Reset : réinitialisation à chaque changement de groupe Client — le solde repart de zéro par client. Leçon : le Reset donne le sens, l'ordre donne la vérité.

🔎 Exemple concret — Solde progressif par client, réglage complet

Farès paramètre son champ de cumul pour les relevés commerciaux.

Champ : {Factures.Montant} — opération Somme
Évaluer : pour chaque enregistrement
Réinitialiser : à chaque changement de groupe (Client)
→ lignes triées par date ; cumul placé en Détails.

Lecture : chaque ligne montre le solde à cette date, par client.

Leçon : le même cumul en « jamais » donnerait un solde global — autre besoin, autre Reset.

Vocabulaire de la section

Cumul en cours d'exécution (Running Total)
Somme ou compte qui s'accumule ligne après ligne, affichant le total « à cette ligne » (solde progressif, total à ce jour).

Exemple simple : Le solde après chaque facture dans le relevé de Farès.

Ce que ce n'est pas : un résumé qui ne donne qu'un total final.

Réflexe : dès qu'il faut voir la progression, pas seulement la fin.

Champ de cumul (Running Total Field)
Objet dédié créé dans l'explorateur : champ à cumuler, opération (Somme, Nombre…), condition d'évaluation et réinitialisation.

Exemple simple : Le champ Somme de {Factures.Montant} de Farès.

Ce que ce n'est pas : un compteur programmé à la main en formule.

Réflexe : utiliser l'outil dédié plutôt que de bricoler.

Réinitialisation (Reset)
Réglage crucial : quand remettre le cumul à zéro — jamais (global), à chaque changement de groupe (par client/compte), ou sur formule.

Exemple simple : Le repart-à-zéro par client des relevés de Farès.

Ce que ce n'est pas : un cumul qui continue de monter d'un client à l'autre.

Réflexe : choisir le Reset selon l'intention avant tout.

Cumul vs résumé
Le RÉSUMÉ (2-2) donne un total à la fin d'un groupe/du rapport ; le CUMUL donne le total intermédiaire à chaque ligne, en progressant.

Exemple simple : Total final du client vs solde après chaque facture.

Ce que ce n'est pas : un résumé copié dans les Détails en guise de cumul.

Réflexe : progression → cumul ; synthèse → résumé.

Dépendance à l'ordre
Un cumul additionne dans l'ordre d'affichage : des lignes mal triées donnent des intermédiaires faux (même si le final est bon).

Exemple simple : Le relevé trié par date avant tout cumul.

Ce que ce n'est pas : un cumul sur des lignes dans l'ordre aléatoire de la base.

Réflexe : toujours trier avant de cumuler.

En pratique — Créer un cumul en cours d'exécution

  1. Créez un champ de cumul (explorateur → Running Total Fields → Nouveau) : champ à cumuler + opération Somme.
  2. Réglez la RÉINITIALISATION selon le besoin : jamais (solde global) ou à chaque changement de GROUPE (solde par client/compte).
  3. Placez le cumul dans la section Détails et TRIEZ les lignes dans l'ordre attendu (date, séquence).
  4. Vérifiez en aperçu : le total progresse ligne après ligne et se réinitialise (ou non) comme prévu.
Vous produisez soldes progressifs et totaux courants (relevés, cumuls par groupe) — des états très demandés, difficiles à faire autrement.

Script prêt à dire — remettre les relevés aux commerciaux (30 s)

« Chaque relevé montre désormais le solde après chaque facture, dans l'ordre des dates, et repart de zéro pour chaque client. Vous suivez l'évolution au lieu de découvrir le total à la fin — et le cumul se recalcule tout seul à chaque rafraîchissement. »

À dire en remettant les relevés ; montrer une ligne et son solde cumulé.

Modèle copier-coller — cumul manuel en formule (syntaxe Crystal)

// Formule @Cumul placée en Détails (si besoin hors outil dédié)
WhilePrintingRecords;
NumberVar Cumul;
Cumul := Cumul + {Factures.Montant};
Cumul
// Formule @ResetCumul placée en En-tête de groupe Client
WhilePrintingRecords;
NumberVar Cumul := 0;

Indépendant

Un champ de cumul bien réinitialisé et vos relevés progressifs se vendent tout seuls.

PME à Alger

Farès livre les relevés par client : solde à chaque ligne, triés par date.

Équipe projet

Standardiser le Reset par groupe Client pour tous les relevés commerciaux.

Débutant

Cette semaine : un cumul global (jamais) + un cumul par groupe, comparés en aperçu.

✓ Bonnes pratiques

  • Choisissez le Reset AVANT de créer le cumul : il définit ce que le chiffre veut dire.
  • Triez toujours les lignes dans l'ordre attendu avant de cumuler (date, séquence).
  • En cas d'incohérence, vérifiez dans l'ordre : tri, Reset, condition d'évaluation.

✗ Pièges fréquents

  • Oublier le tri : intermédiaires absurdes avec un total final qui semble bon.
  • Laisser « ne jamais réinitialiser » pour un besoin par client (ou l'inverse).
  • Cumuler sur des lignes dupliquées par une mauvaise jointure (sommes gonflées).

Points clés à retenir

  • Le CUMUL affiche le total INTERMÉDIAIRE à CHAQUE ligne (solde progressif) — le résumé ne donne qu'un total final.
  • Outil dédié : CHAMPS DE CUMUL — champ, opération, condition d'évaluation et surtout RÉINITIALISATION.
  • RESET : JAMAIS (global), PAR GROUPE (repart par client/compte), ou SUR FORMULE — il détermine le sens du cumul.
  • Un cumul DÉPEND DE L'ORDRE : trier avant, vérifier en aperçu, surveiller les doublons de jointure.

Défi 48h — appliquez demain

Produisez 1 relevé progressif réel (cumul par groupe, lignes triées) et faites-le contrôler par un commercial ligne à ligne.

Checklist sortie de section
  • Je distingue cumul progressif et total final.
  • Mon Reset correspond à l'intention (global ou par groupe).
  • Mes lignes sont triées et mon cumul vérifié en aperçu.
Auto-évaluation 1-5 : mes intermédiaires ont-ils été contrôlés, pas seulement le final ?est-ce que mon Reset repart au bon niveau ?

Questions fréquentes

Cumul ou résumé : quand utiliser l'un ou l'autre, et comment régler la réinitialisation ?

Le RÉSUMÉ (2-2) donne UN total à la fin d'un groupe (sous-total) ou du rapport (total général) — utilisez-le pour le total d'un groupe ou global. Le CUMUL donne le total PROGRESSIF à chaque ligne — utilisez-le pour un SOLDE ligne par ligne (relevé), un total « à ce jour », un cumul qui repart par catégorie. Prérequis du cumul : rapport groupé si Reset par groupe, lignes triées. Réglages : « ne jamais réinitialiser » = cumul global continu ; « à chaque changement de groupe » = repart de zéro par groupe (solde PAR client) ; « sur formule » = condition personnalisée. Option « regrouper le reste / Autres » et cumul conditionnel (n'ajouter que certaines lignes) complètent l'outil.

Mon cumul donne des résultats incohérents : quelles causes vérifier ?

Dans l'ordre : (1) L'ORDRE des lignes (cause n°1) — le cumul additionne dans l'ordre d'affichage ; sans tri par date/séquence, les intermédiaires n'ont aucun sens alors que le final peut être bon. Remède : TRIER avant. (2) Le RESET mal réglé — un « jamais » qui continue de monter d'un client à l'autre, ou un reset au mauvais groupe. Remède : régler selon l'intention. (3) La CONDITION D'ÉVALUATION — « pour chaque enregistrement » par défaut ; si vous ne voulez cumuler que certaines lignes, la condition doit correspondre. (4) Les DOUBLONS de jointure — lignes multipliées = cumul gonflé, comme pour les résumés. Vérifiez un cumul contre des valeurs connues ligne à ligne, pas seulement le total final.

Vérifiez votre compréhension

Que règle la réinitialisation (Reset) d'un cumul en cours d'exécution ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 3Questions inédites et durcies pour valider vos acquis