Cliquez sur "Lancer le calcul" pour executer les etapes d'allocation
Resultats par module
Les resultats apparaitront ici apres le calcul.
⚡ Outils de test & stress
Verification du modele
Controle
Actions
⇄ Centre Import / Export
Hub
Filtres
Export rapide
Export filtre
Export partiel
☰ Gestionnaire de fichiers importes
Suivi
Filtres
Actions
Organisation & Couverture
Entites
Actions
Outils
⌂ Accueil
La page d'accueil offre une vue synthetique de l'etat du modele ABC en cours. Elle affiche des indicateurs cles (KPI) et des raccourcis vers les principales fonctionnalites.
Indicateurs cles (KPI)
KPI
Description
Modules
Nombre de modules definis dans le modele
Membres
Nombre total de membres (toutes dimensions confondues)
Allocations
Nombre de regles d'allocation configurees
GL
Nombre d'ecritures du Grand Livre importees
Inducteurs
Nombre de drivers definis
Periodes
Nombre de periodes chargees (phases R/B)
Actions rapides
En bas de page, des boutons permettent d'acceder directement aux vues principales : Modele, Import GL, Allocations, BPMN, Calcul, Sankey et TCD.
Navigation
Utilisez le menu lateral ou la barre de navigation superieure pour basculer entre les differentes vues de l'application. La page d'accueil se reactualise automatiquement a chaque retour.
Vue d'ensemble
ABC Costing Tool est un outil de modelisation Activity-Based Costing (comptabilite par activites) fonctionnant entierement dans le navigateur. Les donnees sont stockees localement via SQLite (sql.js + IndexedDB).
1. Modele Modules, dimensions, membres
→
2. Import GL Grand Livre comptable
→
3. Allocations Regles + Drivers
→
4. Calcul Moteur ABC
→
5. Resultats Sankey, P&L
Fonctionnalites principales
Modele dynamique : modules, dimensions, membres configurables librement
Import GL : CSV avec colonnes PHASE (R/BYYYY) et MOIS pour multi-periodes
Allocations bidirectionnelles : synchronisation automatique avec les drivers
Editeur BPMN : diagrammes de processus avec hierarchie 3 niveaux
Calcul ABC : moteur d'allocation sequentiel
Visualisation : Sankey interactif et TCD multi-dimensions
⚙ Workflow atelier
La construction d'un modele ABC se fait en seances collaboratives avec les operationnels. Voici le workflow type :
Etape 1 — Organisation (Espaces organisationnels)
Definissez les directions/services de l'entreprise dans Outils > Organisation. Chaque espace permet de travailler direction par direction en atelier.
Selectionnez un espace dans la barre du haut pour filtrer toutes les vues (BPMN, dimensions, matching) sur cette direction uniquement.
Etape 2 — BPMN (Cartographie des processus)
En seance avec chaque direction, dessinez les processus dans le BPMN. Les taches deviennent naturellement des activites ou prestations du modele.
Chaque tache peut etre liee a un module et un membre
Chaque connexion entre taches cree automatiquement une allocation draft
Utilisez les swimlanes pour representer les services
Etape 3 — Matching (Qui alloue a qui ?)
Dans la Matrice de correspondance, definissez les liens entre modules. C'est le coeur de la construction du modele :
Niveau macro : quels modules sont relies ?
Niveau detail : quels membres sources alimentent quels membres destinations ?
Statut : draft → propose → valide
Etape 4 — Drivers (Comment repartir ?)
Assignez des inducteurs (drivers) aux allocations. 8 types disponibles : ponderation, volume, forfait, prorata, egalitaire, formule, taux, composite.
Etape 5 — Import GL & Couts saisis
Chargez les donnees comptables : GL analytique en multi-fichiers + couts saisis a differents niveaux du modele.
Etape 6 — Calcul & Validation
Lancez le calcul, verifiez la conservation des couts (100%), analysez avec le Sankey et le TCD.
Statuts et cycle de vie des elements
Chaque element du modele (dimension, membre, allocation) suit un cycle de vie en 3 statuts :
Statut
Icone
Couleur
Signification
Impact sur le calcul
Brouillon
✎
Gris
En construction. L'element est en cours de reflexion, il peut changer ou disparaitre.
Ignore par le moteur de calcul. N'apparait pas dans les resultats.
Propose
★
Violet
Propose pour validation. L'element est suffisamment defini pour etre teste.
Inclus dans le calcul (permet de tester le modele), mais facilement reversible.
Valide
✓
Vert
Definitif. L'element est confirme et fait partie du modele officiel.
Inclus dans le calcul. Suppression bloquee (repasser en brouillon d'abord).
Cascade automatique des statuts
Les statuts se propagent automatiquement entre les niveaux pour garantir la coherence :
Action
Cascade
Direction
Cocher une cellule dans le matching
L'allocation recoit le statut = min(source, destination). Si les 2 membres sont valides, l'allocation est validee. Si un est en brouillon, l'allocation aussi.
Membres → Allocation
Assigner un driver a une allocation
L'allocation passe en "valide". Les membres source et destination sont automatiquement promus au minimum en "valide" (s'ils etaient en brouillon ou propose).
Allocation → Membres ↑
Retrograder un membre (valide → brouillon)
Toutes les allocations impliquant ce membre sont cappees au nouveau niveau. Ex: une allocation "validee" devient "brouillon" si le membre source repasse en brouillon.
Membres → Allocations ↓
Promouvoir un membre (brouillon → valide)
Pas de cascade : les allocations gardent leur propre statut. Il faut les promouvoir individuellement.
—
En pratique : commencez par construire en brouillon, puis proposez quand la structure est stable, et validez apres la revue avec le client. Le calcul fonctionne avec les elements "proposes" et "valides" — les brouillons sont ignores.
Ou changer le statut ?
Page
Comment
Dimensions (arbre)
Cliquer sur l'icone ✎/★/✓ a gauche du nom pour cycler le statut. Filtre par statut dans la barre de recherche.
Membres (arbre)
Meme icone cliquable. Selection en masse + "Statut en lot" dans la toolbar.
Matching (grille)
Touche S pour cycler le statut de la cellule selectionnee. Clic droit > Statut. Filtre "Tous statuts" dans la toolbar.
BPMN (diagramme)
Les connexions changent de style selon le statut de l'allocation liee (gris pointille = draft, violet mixte = propose, vert continu = valide).
⚙ Configuration du Modele
Modules
Un module represente un type d'objet de cout (ex: Nature, Ressource, Activite, Prestation, Metier). Chaque module a une couleur, une icone et un ordre d'affichage.
Le module d'entree (marque par un bouton radio) est celui qui recoit le GL initial. Par defaut c'est le premier module, mais il est configurable.
Dimensions
Les dimensions sont des axes d'analyse transversaux (ex: Site, Projet, Direction). Chaque dimension contient des membres hierarchiques (details N0, intermediaires N1, racines N2).
Membres
Les membres d'un module sont les elements individuels (ex: "Salaires", "Loyer" pour le module Nature). Chaque membre possede une cle dimensionnelle unique et peut etre associe a des dimensions.
Generation en masse
Le bouton "Generer combinaisons dimensions" permet de creer automatiquement le produit cartesien des dimensions d'un module. Exemple : si le module Ressource a les dimensions Projet (P1, P2) et Direction (D1, D2, D3), cela genere 6 membres : P1.D1, P1.D2, P1.D3, P2.D1, P2.D2, P2.D3.
Selection multiple et actions en masse
Dans la vue Dimensions et Membres, vous pouvez selectionner plusieurs elements :
Clic : selectionne un seul element
Ctrl+Clic : ajoute/retire un element de la selection
Shift+Clic : selectionne une plage contigue
Ctrl+A : selectionne tout
Case a cocher : chaque ligne possede une case a cocher pour la selection
Une fois la selection faite, des boutons d'action en masse apparaissent :
Statut : passer en Brouillon, Propose ou Valide
Niveau : Detail (N0), Intermediaire (N1), Racine (N2) — un noeud avec enfants ne peut pas etre Detail
Service : rattacher a un service organisationnel
Supprimer : suppression groupee
Toggle Code / Libelle
Le bouton ⇄ dans la barre d'outils intervertit l'affichage du code (reference) et du libelle (nom). Ce choix est persiste entre les sessions.
Scroll virtuel (> 500 elements)
Lorsqu'une dimension ou un module depasse 500 membres, le scroll virtuel s'active automatiquement. Seules les lignes visibles sont rendues dans le DOM, ce qui garantit des performances fluides meme avec des milliers d'elements. La recherche, les filtres et la selection fonctionnent normalement en mode virtuel.
Import du Grand Livre (GL)
Module d'entree
Le GL est charge dans le module d'entree du modele. Par defaut c'est le premier module (souvent NATURE), mais il est configurable :
Dans Modele > Modules, cochez le bouton radio "Module d'entree GL" sur le module de votre choix. Il n'y a qu'un seul module d'entree a la fois.
Import multi-fichiers (par paquets)
Le client peut charger le GL en plusieurs fichiers qui se cumulent sur la meme periode/scenario. Exemples :
Fichier 1 : charges de personnel (salaires, charges sociales)
Ajoute les ecritures au GL existant. Chaque fichier cree un lot trace separement.
Import par paquets : salaires.csv + loyers.csv + amort.csv
Remplacer ce fichier
Supprime uniquement le lot precedent ayant le meme nom de fichier, puis reimporte. Les autres lots sont preserves.
Correction d'un seul fichier : nouvelle version de salaires.csv
Remplacer TOUT le GL
Efface toutes les ecritures GL de la periode/scenario, puis importe.
Reinitialisation complete avec un fichier unique
Gestionnaire de fichiers
Au-dessus de la zone d'import, un tableau liste tous les lots charges avec :
Fichier : nom du fichier CSV/XLSX
Module : module cible (NATURE par defaut)
Ecritures : nombre de lignes importees
Montant : total du lot
Version : v1, v2... (si le meme fichier est reimporte)
Statut : Actif (vert) / Archive (gris)
✕ : supprimer un lot individuellement (annule et remplace partiel)
↺ : restaurer une version archivee
Detection de doublons : en mode "Ajouter", l'application detecte automatiquement les doublons potentiels (meme compte + meme montant + meme periode dans 2 lots differents) et affiche un avertissement.
Couts saisis (injections directes)
En complement du GL, des couts saisis peuvent etre injectes a n'importe quel niveau du modele :
Via Donnees > Import couts saisis
Directement dans la colonne Cout saisi d'un module
Ces couts s'ajoutent au GL et sont propages par le moteur de calcul. Exemple :
GL sur NATURE : 500K + Couts saisis sur RESSOURCE : 200K + Couts saisis sur ACTIVITE : 100K
→ Le dernier module recevra 800K (conservation 100%).
Format CSV attendu
Colonne
Obligatoire
Description
Exemple
COMPTE
Oui
Code du compte comptable
641100
LIBELLE COMPTE
Non
Libelle du compte
Salaires cadres
MONTANT
Oui
Montant en euros
125000
DATE
Non
Date de l'ecriture
15/01/2024
CODE RESSOURCE
Non
Code de la ressource/centre
RES_DG
LIBELLE RESSOURCE
Non
Libelle de la ressource
Direction Generale
PHASE
Non
Scenario + annee. R = Reel, B = Budget
R2024 ou B2025
MOIS
Non
Mois (01-12). Si vide, montant reparti sur 12 mois
01, 03, 12
Comportement de la colonne PHASE
Format :RYYYY ou BYYYY
R2024 → Scenario = REEL, Annee = 2024
B2025 → Scenario = BUDGET, Annee = 2025
Si la colonne PHASE n'est pas mappee, la periode et le scenario selectionnes dans l'en-tete sont utilises.
Comportement de la colonne MOIS
MOIS rempli (ex: 03) → l'ecriture est creee pour la periode YYYY-03
MOIS vide → le montant est reparti sur 12 mois (montant / 12 par mois)
Alertes apres calcul
Apres le calcul, le moteur detecte automatiquement les membres orphelins : des membres avec un cout saisi mais sans allocation sortante. Ces couts ne parviendront pas au dernier module.
Si des membres orphelins sont detectes, un bandeau orange s'affiche dans les resultats avec un lien vers le Matching pour creer les allocations manquantes.
€ Import couts saisis
Cette vue permet d'importer des couts directement sur un module via un fichier CSV ou XLSX, sans passer par le Grand Livre comptable.
Procedure d'import
Selectionner le module cible dans la liste deroulante
Charger le fichier (CSV ou XLSX) par glisser-deposer ou via le bouton de selection
L'outil auto-detecte le separateur (virgule, point-virgule, tabulation) et identifie les colonnes
Un apercu du fichier s'affiche pour verification avant validation
Confirmer l'import pour inserer les couts dans le modele
Format attendu
Le fichier doit contenir au minimum deux colonnes :
Colonne
Description
DIM_KEY ou LABEL
Identifiant ou libelle du membre cible
MONTANT
Valeur du cout a affecter
Si la colonne contient un libelle (LABEL) plutot qu'une cle (DIM_KEY), l'outil tente un rapprochement automatique avec les membres existants du module.
Regles d'Allocation
Les allocations definissent comment les couts circulent d'un module a un autre. Chaque regle specifie :
Source : le membre d'origine (module + membre)
Destination : le membre cible
Inducteur (Driver) : la cle de repartition
Quantite : la valeur brute du driver pour cette paire
Poids (%) : le pourcentage de repartition calcule
Navigation croisee
Le bouton ☍ sur chaque allocation ouvre la matrice du driver correspondant dans la vue Drivers, pre-filtree sur les bons modules.
Gestion des Drivers (Inducteurs)
Les drivers (inducteurs) sont les cles de repartition qui determinent comment les couts sont distribues d'une source vers ses destinations. Chaque regle d'allocation reference un driver et utilise son type de calcul pour determiner les proportions.
8 types d'inducteurs
Le type d'un inducteur determine la logique de calcul utilisee lors de l'allocation :
Type
Nom
Logique de calcul
Champ utilise
Cas d'usage
0
Ponderation directe
montant = source × (poids / Σ poids)
driver_weight de chaque allocation
Cle de repartition manuelle (ex: 60% / 40%)
1
Volume (quantites)
montant = source × (quantite / Σ quantites)
Matrice de valeurs du driver, ou driver_quantity en fallback
ETP, m², heures, tickets, nombre de commandes
2
Montant forfaitaire
montant = quantite fixe (plafonne a la source disponible)
driver_quantity de chaque allocation
Loyer fixe, redevance, abonnement
3
Prorata cout destination
montant = source × (cout_dest / Σ couts_dest)
Cout deja accumule dans la destination (entered + calculated)
Repartition des frais generaux au prorata des couts deja alloues
4
Egalitaire (1/N)
montant = source / N
Aucun — repartition uniforme
Charges communes reparties egalement entre tous les beneficiaires
5
Formule
montant = eval(formule)
driver_formula avec fonctions enrichies (voir detail ci-dessous)
Type par defaut : si aucun type n'est specifie, le moteur utilise la Ponderation directe (type 0). Les modeles existants ne sont pas impactes.
Detail des types
Type 0 — Ponderation directe
Le type le plus courant en ABC. Chaque allocation porte un poids (ex: 60, 40). Le moteur normalise les poids pour obtenir des pourcentages : si la source a 100 000 € et deux destinations a 60 et 40, elles recoivent respectivement 60 000 € et 40 000 €.
Type 1 — Volume (quantites)
Les quantites sont lues dans la matrice de valeurs du driver (ecran "Gestion des Inducteurs"). Si une quantite n'est pas saisie dans la matrice, le champ driver_quantity de l'allocation est utilise en fallback, puis le driver_weight. Les quantites sont normalisees de la meme facon que les poids.
Exemple : Driver "Surface m²" avec 3 destinations : Bureau A = 120 m², Bureau B = 80 m², Atelier = 200 m². Le loyer de 400 000 € est reparti : A = 120 000 €, B = 80 000 €, Atelier = 200 000 €.
Type 2 — Montant forfaitaire
Chaque destination recoit un montant fixe defini par le champ driver_quantity. Si la somme des forfaits depasse le montant source, les montants sont proportionnellement reduits pour ne pas depasser la source. Ce type est utile pour les redevances fixes ou les abonnements.
Type 3 — Prorata cout destination
La repartition est proportionnelle au cout deja accumule dans chaque destination. Plus une destination a deja recu de couts, plus sa part sera elevee. Ce type est ideal pour les frais generaux de type "overhead" qui doivent etre repartis au prorata de l'activite reelle.
Ordre de calcul : ce type depend des couts deja calcules dans les destinations. L'ordre des etapes d'allocation est donc important — les etapes precedentes doivent avoir alimente les destinations avant cette etape.
Type 4 — Egalitaire (1/N)
Le montant source est divise en parts egales entre toutes les destinations. Si 300 000 € sont a repartir vers 5 destinations, chacune recoit 60 000 €. Les poids et quantites sont ignores.
Type 5 — Formule (syntaxe Excel)
Les formules utilisent une syntaxe similaire a Excel, commencant par =. L'auto-completion, la coloration syntaxique et la validation en temps reel aident a la saisie. Les formules legacy JavaScript restent compatibles.
Commencez par = pour utiliser la syntaxe Excel. Les formules sans = sont interpretees comme du JavaScript (mode legacy, compatible avec les modeles existants).
Variables disponibles
Variable
Description
SRC_TOTAL
Cout total de la source (entered + calculated)
WEIGHT
Poids de l'allocation (driver_weight, en %)
QTY
Quantite de l'allocation (driver_quantity)
N
Nombre total de destinations depuis cette source
SRC_ID / DST_ID
Identifiants numeriques source et destination
Fonctions Excel standard
Fonction
Syntaxe
Description
IF
IF(cond; vrai; faux)
Condition
ROUND
ROUND(val; decimales)
Arrondi
ABS
ABS(val)
Valeur absolue
MIN / MAX
MIN(a; b; ...)
Minimum / Maximum
SUM
SUM(a; b; ...)
Somme des arguments
AVERAGE
AVERAGE(a; b; ...)
Moyenne
IFERROR
IFERROR(expr; fallback)
Remplace les erreurs
SWITCH
SWITCH(expr; val1; res1; ...)
Multi-cas
AND / OR / NOT
AND(c1; c2)
Logique booleenne
FLOOR / CEILING
FLOOR(val; pas)
Arrondi inf./sup.
MOD
MOD(a; b)
Modulo
POWER
POWER(base; exp)
Puissance
Fonctions ABC (acces aux donnees du modele)
Fonction
Description
Exemple
COST("dim_key")
Cout total d'un membre identifie par sa dim_key
=COST("NAT_SALAIRES") * 1.68%
SUM_DIM("dim_ref"; "member_ref")
Somme des couts par valeur de dimension
=SUM_DIM("TYPE_CHARGE"; "DIRECT") * WEIGHT / 100
SUM_MODULE("module_ref")
Total des couts d'un module entier
=SUM_MODULE("NATURE") * 0.01
DRIVER("drv_ref"; srcId; dstId)
Valeur d'un autre driver pour ce couple src/dst
=DRIVER("DRV_ETP"; SRC_ID; DST_ID)
MEMBER(id)
Cout d'un membre par son ID numerique
=MEMBER(DST_ID)
COST_TREE("dim_key")
Cout d'un groupe + tous ses descendants dans la hierarchie
=COST_TREE("GRP_PERSONNEL")
SUM_MEMBERS("dk1"; "dk2"; ...)
Somme des couts de plusieurs membres/groupes selectionnes
=SUM_MEMBERS("GRP_EXPLOIT"; "GRP_PERSONNEL")
Exemples de formules :
=SRC_TOTAL * WEIGHT / 100 — equivalent a la ponderation directe
=ROUND(SUM_MODULE("NATURE") * 0.01; 2) — 1% arrondi du total natures
=IFERROR(SRC_TOTAL / QTY; 0) — gestion des divisions par zero
=DRIVER("DRV_ETP"; SRC_ID; DST_ID) * DRIVER("DRV_M2"; SRC_ID; DST_ID) — produit de deux drivers
Separateur d'arguments : utilisez le point-virgule ; (convention Excel francais) ou la virgule ,. Les deux sont acceptes.
Si la formule retourne des montants absolus (somme proche de SRC_TOTAL), ils sont utilises directement (avec mise a l'echelle). Sinon ils sont normalises en proportions.
Type 6 — Taux / Taxe (nouveau)
Ce type est specialement concu pour les taxes, cotisations et charges assises sur une base de couts. Le fonctionnement est en deux etapes :
Calcul de la base : le moteur selectionne un ensemble de membres selon la configuration et somme leurs couts (entered + calculated deja presents)
Application du taux : montant = base × taux, puis repartition sur les destinations selon les poids habituels
4 modes de selection de la base :
Mode
Description
Exemple
Par module
Tous les membres d'un module entier
Module NATURE → somme de toutes les natures de charges
Par dimension
Membres tagges avec une ou plusieurs valeurs d'une dimension
Tous les descendants d'un membre parent dans la hierarchie d'un module
Parent "GRP_SALAIRES" → tous ses sous-elements
Selection manuelle
Liste explicite d'IDs de membres
Membres 12, 15, 23 → couts de ces 3 membres
Exemple concret : Taxe formation professionnelle = 1,68% de la masse salariale.
Configuration : Mode = "Par dimension", Dimension = DIM_NATURE_GRP, Valeurs = [SAL_BASE, SAL_PRIMES, SAL_CHARGES], Taux = 1.68%.
Si la masse salariale totale est de 2 000 000 €, le montant de la taxe sera de 33 600 €, repartis sur les destinations selon les poids de l'allocation.
Priorite : les drivers de type Taux/Taxe doivent generalement etre calcules apres les allocations normales pour que la base soit deja alimentee. Utilisez le champ Priorite (ex: 1 = apres les normaux) pour garantir l'ordre correct.
Type 7 — Composite / Produit (nouveau)
Ce type permet de combiner plusieurs inducteurs par multiplication. Pour chaque couple source→destination, le poids est calcule comme le produit des valeurs de chaque driver reference :
Les poids sont ensuite normalises pour repartir le montant source proportionnellement.
Exemple : Combiner ETP et Surface m².
Driver "ETP" : Bureau A = 10, Bureau B = 5, Atelier = 2
Driver "Surface" : Bureau A = 100 m², Bureau B = 80 m², Atelier = 300 m²
Produit : A = 1000, B = 400, C = 600 → Total = 2000
Repartition : A = 50%, B = 20%, C = 30%
Configuration : dans l'editeur de l'inducteur, selectionnez le type "7 - Composite" puis choisissez les drivers a multiplier dans la liste multi-selection. Les valeurs de chaque driver sont lues depuis la matrice de valeurs (driver_values) pour la periode/scenario courants.
Priorite de calcul
Chaque driver possede un champ Priorite qui controle l'ordre d'execution au sein d'une meme etape d'allocation :
Taxes sur salaires, cotisations (base = resultat des allocations priorite 0)
2
En dernier
Taxes sur taxes, ajustements finaux
Le moteur traite les allocations dans l'ordre des priorites croissantes. Entre chaque niveau de priorite, les couts calcules sont rafraichis, ce qui permet aux drivers de priorite 1 de "voir" les montants alloues par les drivers de priorite 0.
Sans changement de priorite, toutes les allocations d'une etape sont traitees simultanement (comportement par defaut, identique aux versions precedentes).
Types mixtes sur une meme source
Si les allocations d'une meme source utilisent des drivers de types differents, le moteur repartit d'abord le montant source entre les groupes de type au prorata de leurs poids cumules, puis applique la logique de chaque type au sein de son groupe.
Filtres de la liste
Le panneau gauche offre plusieurs filtres pour retrouver rapidement un inducteur :
Recherche textuelle : filtre par nom, reference, unite ou description
Utilisation : "Tous", "Utilises" (references dans au moins une allocation) ou "Non utilises"
Unite : filtre par unite de mesure (ETP, m², h, €...) ou "Sans unite"
Le badge compteur indique le nombre d'inducteurs affiches / total (ex: 5/20).
Filtres de la matrice
La matrice de valeurs offre des filtres avances :
Module source / destination : restreint aux membres d'un module specifique
Recherche sources / destinations : filtre textuel sur les labels des membres
Non vides : masque les lignes et colonnes sans aucune valeur saisie
Le compteur en bas de la barre de filtres indique la taille de la matrice et le nombre de cellules remplies.
Statistiques de l'inducteur
Lorsqu'un inducteur est selectionne, une barre de statistiques affiche : unite, nombre d'allocations, nombre de sources/destinations uniques, nombre de valeurs saisies, et les flux entre modules (ex: RESSOURCE → ACTIVITE).
Synchronisation bidirectionnelle
Allocation → Driver : creer une allocation avec un driver cree automatiquement la valeur correspondante dans la matrice
Driver → Allocation : modifier une valeur dans la matrice cree/met a jour l'allocation correspondante avec les poids recalcules
Interface de la page Drivers
La page de gestion des inducteurs est composee de trois zones principales :
Zone
Contenu
Panneau gauche
Liste des inducteurs avec filtres (recherche, utilisation, unite, type), badge compteur, boutons dupliquer/modifier/supprimer
Section configuration
Parametres du driver selectionne : type, priorite, unite, sequence, description, formule equivalente, bouton Convertir
Matrice de valeurs
Grille Excel-like source × destination pour saisir/visualiser les valeurs du driver
Matrice Excel-like (grille interactive)
La matrice de valeurs est une grille interactive inspiree d'Excel, conque pour la saisie et l'analyse de grandes matrices source × destination (jusqu'a 300 × 150 cellules affichees).
Fonctionnalites de la grille
Fonction
Raccourci / Action
Description
Selection
Clic sur cellule
Selectionne une cellule. La barre d'outils affiche "Source → Destination" et la valeur.
Selection multiple
Shift+Clic, glisser
Selectionne une plage rectangulaire de cellules
Navigation
Fleches, Tab, Shift+Tab
Se deplacer dans la grille (Tab = droite, Enter = bas)
Edition
Double-clic, F2, ou taper directement
Ouvre l'editeur dans la cellule. Taper un chiffre demarre l'edition.
Valider
Enter, Tab
Valide la saisie et deplace la selection
Annuler
Echap
Annule l'edition en cours
Supprimer
Suppr, Backspace
Efface le contenu des cellules selectionnees
Copier
Ctrl+C
Copie la selection en format TSV (collable dans Excel)
Coller
Ctrl+V
Colle depuis le presse-papier (TSV depuis Excel, Google Sheets...)
Copier/Coller avec Excel : selectionnez une plage dans la matrice, Ctrl+C, puis collez dans Excel. Inversement, copiez une plage dans Excel et collez dans la matrice avec Ctrl+V. Le format TSV (tabulations) est utilise.
Affichage hierarchique (lignes et colonnes)
Si les membres source ou destination ont une hierarchie (parent/enfant), la matrice affiche automatiquement un arbre depliable :
Lignes hierarchiques : les groupes sources apparaissent avec un triangle ▼/▶ pour deplier/replier. Les sous-totaux du groupe sont calcules automatiquement.
Colonnes hierarchiques : les groupes destinations apparaissent dans un en-tete a deux niveaux. Les groupes replies montrent un sous-total agrege.
Indentation visuelle : les details (N0) sont indentes sous leur groupe parent avec des niveaux de profondeur (0, 1, 2, 3).
Un badge 🌳 dans le compteur indique que le mode hierarchique est actif.
Mise en forme conditionnelle
Le selecteur dans la barre d'outils propose trois modes :
Mode
Rendu
Normal
Aucune mise en forme — affichage standard
■ Nuances vert
Heatmap : les cellules sont colorees du blanc (min) au vert (max)
▮ Barres donnees
Barres horizontales proportionnelles a la valeur (0% → 100% de la cellule)
La mise en forme s'applique uniquement aux cellules contenant une valeur et se met a jour automatiquement.
Filtres par colonne
Chaque en-tete de colonne dispose d'une icone ▼ au survol. Un clic ouvre un panneau de filtre avec :
Statistiques : nombre de valeurs, total, moyenne, min, max pour cette colonne
Afficher/Masquer : case a cocher pour masquer la colonne sans perdre les donnees
Tri : trier toutes les lignes par cette colonne (croissant ou decroissant)
Filtre par valeur : filtrer les lignes affichees selon une condition sur la valeur dans cette colonne :
Operateurs : >>=<<==≠entre
Conditions speciales : videnon vide
Les valeurs uniques de la colonne sont affichees en puces cliquables pour remplir rapidement le champ
Les filtres actifs sont indiques dans la barre d'outils avec des boutons pour les retirer.
Import / Export CSV & XLSX
Le systeme d'import supporte les formats CSV et XLSX (Excel). Il est adapte au type d'inducteur selectionne et propose trois modes de traitement :
Modes d'import
Mode
Comportement
Cas d'usage
⇄ Annuler et remplacer
Supprime toutes les valeurs existantes pour ce driver/periode/scenario, puis importe le fichier integralement
Rechargement complet des donnees depuis un fichier maitre (ex: export ERP mensuel)
⇄ Mettre a jour / Ajouter
Ajoute les nouvelles paires source/destination. Ecrase les valeurs existantes si la paire existe deja (upsert)
Mise a jour partielle : corriger certaines valeurs ou ajouter de nouvelles lignes
▶ Completer uniquement
N'ajoute que les paires qui n'existent pas encore. Ne touche a aucune valeur existante.
Enrichir les donnees sans risquer d'ecraser des saisies manuelles
Donnees importees selon le type d'inducteur
Type
Colonne valeur
Stockage
Option allocations
0 - Ponderation
Poids
driver_values + driver_weight sur allocations
☑ Creer/mettre a jour les allocations
1 - Volume
Quantite
driver_values (matrice)
—
2 - Forfaitaire
Montant
driver_values + driver_quantity sur allocations
☑ Creer/mettre a jour les allocations
3 - Prorata
Pas d'import — valeurs calculees automatiquement
4 - Egalitaire
Pas d'import — repartition uniforme
5 - Formule
Valeur
driver_values (matrice optionnelle)
—
6 - Taux
Valeur
driver_values (matrice optionnelle)
—
7 - Composite
Valeur
driver_values (matrice optionnelle)
—
Formats supportes
Format
Import
Export
Details
CSV
☑
☑
Separateurs ;, ou tabulation. UTF-8 + BOM. Decimales francaises acceptees.
XLSX
☑
☑
1ere feuille du classeur. Export avec feuille de donnees + feuille info (driver, periode, date).
En-tete : la premiere ligne est ignoree si elle contient "source", "destination", "valeur", "poids", "quantite" etc.
Identification : les membres sont identifies par leur label ou dim_key (insensible a la casse)
Decimales : la virgule francaise 1 234,56 est automatiquement convertie en CSV. En XLSX les nombres sont lus directement.
Rapport d'import : apres l'import, un rapport detaille indique le nombre de valeurs importees, ignorees, allocations creees, et les erreurs ligne par ligne avec la raison (membre introuvable, valeur invalide, etc.).
Export XLSX : le classeur contient deux feuilles : la feuille de donnees (nommee d'apres l'inducteur) et une feuille "Info" avec les metadonnees (reference, periode, scenario, date). Les largeurs de colonnes sont auto-ajustees.
Export : deux boutons sont disponibles : CSV (fichier texte) et XLSX (classeur Excel). Les donnees exportees sont adaptees au type de l'inducteur (poids, quantites ou valeurs). Pour les types 0 et 2, les donnees des allocations sont incluses en complement de la matrice.
Editeur de formules (type 5)
Lorsque le type d'un inducteur est 5 - Formule, un editeur complet s'affiche avec :
Barre de formule fx : zone de saisie avec coloration syntaxique en temps reel (variables en bleu, fonctions en ambre, chaines en vert, erreurs en rouge) et auto-completion declenchee par " pour les references et Ctrl+Espace pour les fonctions
Validation en direct : un indicateur sous la barre affiche « ✅ Formule valide » ou le detail de l'erreur de syntaxe
Puces de reference rapide : les variables (SRC_TOTAL, WEIGHT, QTY, N, SRC_ID, DST_ID) et fonctions (COST, COST_TREE, SUM_MEMBERS, SUM_MODULE, SUM_DIM) sont affichees en puces colorees avec des infobulles detaillees au survol
Selecteur de references : panneau a 6 onglets pour parcourir et inserer des references (voir ci-dessous)
Bouton Tester : execute la formule avec des valeurs de test pour verifier le resultat
Selecteur de references (Reference Picker)
Le selecteur en bas de l'editeur de formules propose 6 onglets pour parcourir toutes les references inserables dans une formule :
Onglet
Contenu
Action au clic
Modules
Liste des modules du modele (NATURE, RESSOURCE, ACTIVITE...)
Insere SUM_MODULE("REF") dans la formule
Dimensions
Dimensions et leurs valeurs. Cliquer sur une dimension ouvre ses membres en sous-filtre
Insere SUM_DIM("dim"; "valeur")
Membres
Tous les membres de tous les modules, filtrables par module
Insere COST("dim_key")
Hierarchie
Arborescence hierarchique des modules (racines N2, intermediaires N1, details N0) avec selection multiple
Insere SUM_MEMBERS(...), COST_TREE()+..., ou Module - selection
Drivers
Tous les drivers existants avec leur type affiche en badge colore
Insere DRIVER("REF"; SRC_ID; DST_ID)
Fonctions
Catalogue complet : Variables, Fonctions ABC, Fonctions Excel — avec syntaxe et description
Insere la syntaxe de la fonction avec ses arguments pre-remplis
Astuce : L'onglet actif affiche un compteur (N) indiquant le nombre d'elements disponibles. Utilisez le champ de recherche pour filtrer rapidement par nom ou reference.
Selecteur hierarchique (onglet Hierarchie)
L'onglet Hierarchie est un outil puissant pour selectionner des groupes de couts dans l'arborescence du modele :
Choisir le module dans le sous-filtre (NATURE, RESSOURCE, etc.)
Naviguer dans l'arbre : les groupes racine (N2) sont affiches avec leurs enfants repliables. Les badges N2N1N0 indiquent le niveau hierarchique
Filtrer par niveau : le selecteur « Tous niveaux / N2 Racines / N1 Intermediaires / N0 Detail » restreint l'affichage
Cocher les elements a inclure (cases a cocher). Le compteur de descendants en gris indique combien d'elements detail (N0) sont sous chaque groupe
Choisir le mode d'insertion dans la barre de selection :
Bouton
Formule generee
Cas d'usage
Inserer SUM_MEMBERS
=SUM_MEMBERS("GRP_A"; "GRP_B"; ...)
Additionner les couts de plusieurs groupes/membres selectionnes
Inserer COST_TREE + ...
=COST_TREE("GRP_A") + COST_TREE("GRP_B")
Addition explicite de branches hierarchiques (chaque branche = groupe + descendants)
Exclusion : total du module MOINS les groupes selectionnes. Ideal pour « tout sauf les taxes »
Exemple concret — Taxe formation : Pour calculer 1,68% de la masse salariale hors taxes et provisions :
1. Onglet Hierarchie → Module NATURE
2. Cocher « GRP_TAXES » et « GRP_PROVISIONS »
3. Cliquer « Module - selection » → insere =SUM_MODULE("NATURE") - SUM_MEMBERS("GRP_TAXES"; "GRP_PROVISIONS")
4. Completer manuellement avec * 1.68%
Resultat : =( SUM_MODULE("NATURE") - SUM_MEMBERS("GRP_TAXES"; "GRP_PROVISIONS") ) * 1.68%
Fonctions hierarchiques : COST_TREE et SUM_MEMBERS
Ces deux fonctions exploitent la hierarchie a 3 niveaux du modele ABC :
COST_TREE("dim_key")
Retourne le cout total d'un membre plus tous ses descendants dans la hierarchie
Si le membre est un detail (N0), retourne simplement son cout (entered + calculated)
Si le membre est un groupe (N1 ou N2), parcourt recursivement tous ses enfants details et somme leurs couts
La dim_key est recherchee dans tous les modules automatiquement
Algorithme : COST_TREE utilise un parcours en pile (stack-based) : il descend dans les enfants, et pour chaque detail trouve, accumule le cout. Si le groupe n'a aucun detail avec cout, le cout propre du groupe est utilise en fallback.
SUM_MEMBERS("dk1"; "dk2"; ...)
Variante multi-arguments : somme les COST_TREE de chaque dim_key passee en argument
Accepte de 1 a 99 arguments (dim_keys entre guillemets, separes par ;)
Equivalent a COST_TREE("dk1") + COST_TREE("dk2") + ... mais plus concis
Formules predefinies (presets)
Le selecteur « Formule predefinie » en haut de l'editeur propose 17 modeles organises en 6 categories :
Categorie
Exemples
Description
Repartition par poids
=WEIGHT, =SRC_TOTAL * WEIGHT / 100
Cles de repartition manuelles classiques
Repartition par volume
=QTY, =QTY * WEIGHT
Volumes (ETP, m², heures) avec ou sans poids
Montant fixe / egalitaire
=SRC_TOTAL / N, =MIN(WEIGHT; SRC_TOTAL / N)
Forfaits et repartition uniforme
Prorata sur couts
=MEMBER(DST_ID), =COST_TREE("...")
Proportionnel aux couts existants
Taxes et taux
=COST_TREE("...") * 1.68%
Taxes sur une base avec exclusions possibles
Composite / avance
=DRIVER("A"; SRC_ID; DST_ID) * DRIVER("B"; ...)
Produits de drivers, conditions, arrondis
Selectionnez un preset, puis remplacez les "..." par vos references reelles en utilisant le selecteur ci-dessous. Les presets sont un point de depart — modifiez-les librement.
Convertir en type Formule
Chaque type d'inducteur (0 a 4, 6, 7) affiche un bandeau bleu « ▷ Equivalent formule » montrant la formule equivalente. Le bouton Convertir en type Formule :
Lit la configuration actuelle du driver (type, taux, module, dimension, depends_on...)
Construit automatiquement la formule equivalente la plus precise possible
Bascule le type sur « 5 - Formule » et pre-remplit la formule
Cas particuliers geres :
Type 6 (Taux) → lit le taux, le mode (module/dimension/hierarchie/IDs) et construit =SUM_MODULE("...") * taux% ou =SUM_DIM("..."; "...") * taux% ou =COST_TREE("...") * taux% selon la configuration
Type 7 (Composite) → lit les drivers references et construit =DRIVER("A"; SRC_ID; DST_ID) * DRIVER("B"; SRC_ID; DST_ID)
Pourquoi convertir ? Le type Formule offre une flexibilite totale : combiner des bases, ajouter des conditions IF, des seuils MIN/MAX, des arrondis ROUND... Si votre besoin depasse les capacites d'un type standard, convertissez et enrichissez la formule.
Separateur, pourcentages et operateurs
Separateur d'arguments : point-virgule ; (convention Excel francais) ou virgule , — les deux sont acceptes
Suffixe % : divise automatiquement par 100. Ainsi 1.68% equivaut a 0.0168
Parentheses : groupement classique ( ) pour forcer la priorite des operations
Normalisation des resultats
Le moteur de calcul detecte automatiquement si la formule retourne des montants absolus ou des proportions :
Si la somme des resultats pour toutes les destinations est proche de SRC_TOTAL (± 5%), les montants sont utilises directement (avec mise a l'echelle si necessaire)
Sinon, les resultats sont normalises en proportions (comme pour les types 0 et 1)
Formules legacy JavaScript : les formules ne commencant pas par = sont interpretees comme du JavaScript brut (mode legacy). Les variables disponibles sont les memes. Un bouton « Convertir en =FORMULE » apparait pour migrer facilement.
⇆ Vue Net Allocation
La vue Net Allocation presente un tableau matriciel des flux nets entre modules apres execution du calcul ABC.
Lecture de la matrice
Lignes : modules sources (emetteurs de couts)
Colonnes : modules destinations (recepteurs de couts)
Chaque cellule affiche le montant net transfere de la source vers la destination
Interpretation des montants
Valeur
Signification
Positif
Flux net sortant de la source vers la destination
Negatif
Flux net inverse (la destination restitue davantage qu'elle ne recoit)
Zero / vide
Aucun flux entre ces deux modules
Le tableau est exportable en CSV. Utilisez-le pour verifier l'equilibre global du modele : la somme de chaque ligne doit correspondre au cout total emis par le module source.
Editeur BPMN — Guide complet
L'editeur BPMN est un outil visuel de type Draw.io / MS Visio pour modeliser les processus metier et les connecter au modele ABC. Il est concu pour etre utilise en atelier avec les operationnels.
Interface (3 zones)
Zone
Position
Contenu
Palette
Gauche
Objets a glisser-deposer sur le canvas (12 types d'elements)
Ruban
En haut
Style contextuel (couleur, bordure, opacite, trait des fleches). Change selon la selection.
Canvas
Centre
Zone de dessin SVG avec grille pointillee, zoom/pan molette
Vue d'ensemble miniature du diagramme avec rectangle viewport
Legende
Bas-gauche
Modules ABC utilises dans le diagramme avec leurs couleurs
Elements disponibles (palette)
Categorie
Element
Forme
Usage ABC
FLUX
● Debut
Cercle vert + play
Point d'entree du process
◉ Fin
Cercle rouge + stop
Point de sortie
▢ Tache
Rectangle arrondi
Activite/prestation → liee a un membre module
◊ XOR
Losange ambre
Decision exclusive (ou/ou)
✚ AND
Losange indigo
Parallelisme (et/et)
☰ Couloir
Rectangle large avec header
Contient des taches. Represente un service/direction
ABC
€ Centre cout
Hexagone teal
Centre de cout / poste de charge
◎ KPI / Driver
Rectangle violet arrondi
Inducteur d'allocation visualise
☰ Document
Feuille avec vague
Document de reference
✎ Note
Post-it jaune
Annotation libre pour la seance
Sources
▦ Excel
Rectangle vert + grille
Source de donnees Excel
☌ BDD
Cylindre bleu
Source base de donnees
Raccourcis clavier
Raccourci
Action
Ctrl+Z
Annuler (undo) — jusqu'a 40 actions
Ctrl+Y / Ctrl+Shift+Z
Retablir (redo)
Ctrl+C
Copier les elements selectionnes (+ connexions internes)
Ctrl+V
Coller avec decalage de 30px
Ctrl+A
Tout selectionner
Ctrl+Clic
Multi-selection (ajouter/retirer un element)
Delete / Backspace
Supprimer les elements selectionnes
Shift+Clic
Creer connexion (source → cible)
Escape
Deselectionner tout, annuler connexion en cours
Double-clic sur element
Editer le nom inline, naviguer dans sous-processus, ou entrer en mode dossier (swimlane)
Double-clic sur label fleche
Editer le texte du flux inline
Molette
Zoom avant/arriere
Clic+drag sur fond
Pan (deplacer la vue)
Connexions (fleches)
Les connexions representent les flux d'allocation entre elements. Deux methodes pour les creer :
Drag depuis un port : survoler un element → des ancres (cercles indigo) apparaissent sur les 4 bords. Glisser depuis une ancre vers une autre pour creer la connexion.
Shift+Clic : clic sur la source, puis shift+clic sur la cible. Le port optimal est choisi automatiquement.
Parametres des connexions (ruban + panneau)
Parametre
Options
Couleur
Palette de 16 couleurs + couleur personnalisee
Epaisseur
Fin (1px), Normal (2px), Epais (3px), Tres epais (5px)
En mode Angles droits, des poignees violettes apparaissent sur les segments quand la connexion est selectionnee. Glissez-les pour ajuster le chemin.
Swimlanes (couloirs)
Les swimlanes sont des conteneurs visuels style MS Visio :
Contenu : tout element dont le centre est a l'interieur du swimlane en fait partie
Deplacement groupe : deplacer un swimlane deplace automatiquement tous les elements contenus
Imbrication : un swimlane peut contenir d'autres swimlanes (ex: Direction Generale > DAF > Compta)
Collapse : cliquer sur ▼/▶ dans le header pour replier. Les taches sont masquees, les connexions sont redirigees vers le swimlane replie en "pattes d'araignee" espacees
Cascade : collapser un parent collapse aussi tous les sous-swimlanes et leur contenu
Resize : poignee en bas a droite pour agrandir/reduire
Badge : affiche "N el." dans le header pour voir le nombre d'elements contenus
Mode dossier (focus / drill-down)
Les swimlanes fonctionnent comme des dossiers navigables. On peut « entrer » dans un couloir pour se concentrer sur son contenu :
Action
Resultat
Double-clic sur un swimlane
Entre en mode dossier : seuls les elements contenus dans ce couloir sont affiches
Bouton → dans le header du couloir
Idem (alternative au double-clic)
Clic droit > Entrer dans le couloir
Idem (menu contextuel)
Bouton ↑ Remonter dans le ruban
Remonte d'un niveau dans la pile de focus
Bouton × Quitter dans le ruban
Sort completement du mode dossier, affiche tous les elements
Fil d'Ariane (breadcrumb)
Cliquer sur un niveau du chemin pour y revenir directement
Imbrication : On peut entrer dans un couloir enfant a l'interieur d'un couloir parent. Le fil d'Ariane affiche la pile complete : Vue Master / Diagramme / Couloir A / Couloir B. Le couloir focuse est rendu en fond subtil, les autres elements hors perimetre sont masques.
Calques et unites organisationnelles
Deux systemes de filtrage coexistent dans le ruban BPMN :
Calque
Description
Calques de statut
Brouillon / Propose / Valide — filtre les connexions par statut d'allocation. Decocher un calque masque les connexions de ce statut.
Unites organisationnelles
Chaque entite de la page Organisation apparait comme un toggle. Decocher une UO masque les elements BPMN rattaches a cette entite. Les elements sans tag restent toujours visibles.
Rattacher un element a une UO : clic droit sur l'element → cocher les entites organisationnelles souhaitees. Un badge colore apparait dans le header du couloir ou a cote de l'element.
Hierarchie des diagrammes (3 niveaux)
Niveau
Description
Navigation
Master
Vue d'ensemble de tous les diagrammes
Bouton "Vue Master" dans la toolbar
Diagramme
Un processus complet avec ses taches et flux
Double-clic sur un bloc Master, ou selection dans le dropdown
Sous-processus
Detail d'une tache complexe
Double-clic sur un element marque sous-processus
Un fil d'Ariane en haut du canvas permet de remonter dans la hierarchie.
Style des elements (ruban)
Quand un element est selectionne, le ruban en haut affiche :
Couleur de fond : palette de 16 couleurs
Epaisseur bordure : 1 a 4 px
Style bordure : continu, tirets, points, mixte
Opacite : slider de 20% a 100%
Indicateurs visuels ABC
Barre couleur (bord gauche) : indique le module ABC lie (couleur du module)
Badge cout (bas-droite) : affiche le montant calcule en "123K€" si un calcul a ete execute
Legende (bas-gauche du canvas) : resume les modules utilises avec leurs couleurs
Recherche
Le champ Recherche dans le ruban permet de trouver un element ou une connexion par nom. Taper un texte → liste de resultats → cliquer pour zoomer et centrer sur l'element avec une animation pulse. Si l'element est dans un swimlane collapse, celui-ci est automatiquement deploye.
Navigation au clavier dans les resultats : ↑/↓ pour naviguer, Entree pour selectionner, Echap pour fermer.
Moteur de Calcul
Le calcul ABC s'execute en etapes sequentielles :
Chargement GL : les ecritures du grand livre alimentent les natures de charges
Allocations sequentielles : chaque etape redistribue les montants selon les regles et les drivers configures
Analyse des flux : construction des contributions nettes (BFS upstream/downstream) et du cube PNL multi-dimensions
Resultats : les montants finaux sont affiches dans le Sankey et le TCD (Tableau Croise Dynamique)
Web Worker : Lorsque le navigateur le supporte, le calcul s'execute automatiquement dans un thread d'arriere-plan (Web Worker). L'interface reste reactive pendant toute la duree du calcul. Voir la section Performance & Web Worker pour les details.
✓ Verification
La vue Verification execute des tests de coherence automatiques sur le modele ABC afin de detecter les anomalies avant ou apres le calcul.
Types de tests
Test
Description
Conservation des couts
Verifie que le total des couts en entree egale le total en sortie (pas de perte ni de creation de valeur)
Allocations orphelines
Detecte les regles d'allocation qui referencent des membres inexistants ou supprimes
Membres sans cout
Identifie les membres qui n'ont ni cout saisi ni cout recu par allocation
Interpretation des resultats
PASS : le test est valide, aucune anomalie detectee
FAIL : une incoherence a ete trouvee ; cliquez sur le detail pour identifier les elements concernes
Execution automatisee
La fonction runTypeTests() permet de lancer l'ensemble des tests par programmation (console ou API). Elle retourne un rapport detaille avec le statut de chaque verification.
Diagramme Sankey
Le Sankey visualise les flux de couts entre modules. Chaque bande represente un flux d'allocation, sa largeur proportionnelle au montant. Cliquez sur un noeud pour voir le detail (flux amont, aval, trace complete).
Eclatement automatique
A l'ouverture, le Sankey calcule automatiquement le meilleur niveau de detail pour chaque module afin d'avoir entre 2 et 15 noeuds par module. L'algorithme :
Teste chaque niveau hierarchique (racine, intermediaire, detail) des membres du module
Teste chaque dimension associee au module (Client, Canal, Direction...)
Choisit le niveau qui donne le meilleur nombre de noeuds dans le range cible
Sauvegarde la configuration pour les prochaines visites
Vous pouvez ajuster le range cible dans Parametres > Eclatement Sankey > Range auto-split (defaut: 2 a 15 noeuds/module). Cliquez sur « Recalculer » pour forcer un nouveau calcul.
Eclatement manuel
Utilisez le menu "+ Module" pour ajouter un eclatement supplementaire. Pour chaque module eclate :
Controle
Description
Selecteur dimension
Choisir la dimension d'eclatement (ou "Membres" pour la hierarchie du module)
Groupes / Niv.2 / Detail
3 niveaux hierarchiques — cliquer pour changer
×
Retirer l'eclatement de ce module
Filtres avances (Treeview)
Les filtres Dimension et Attribut utilisent un menu treeview multi-selection avec :
Recherche : filtrer par nom ou reference dans l'arbre
Multi-selection : cocher plusieurs elements (Ctrl+clic ou checkboxes)
Niveaux : boutons "Groupes", "Interm.", "Detail" pour selectionner un niveau entier
Tout / Aucun : selection rapide
Collapse/Expand : replier/deplier les noeuds parents
Parametrage dans Outils > Parametres
Parametre
Description
Defaut
Range auto-split
Nombre min et max de noeuds par module pour le calcul automatique
2 a 15
Eclatement par module
Configuration manuelle : dimension + niveau pour chaque module
Auto-calcule
Top N
N'afficher que les N plus gros noeuds, le reste en "Autres"
0 (tout)
Seuil Autres (%)
Regrouper les noeuds representant moins de N% en "Autres"
0 (desactive)
Montants / Labels
Afficher ou masquer les montants et labels sur le diagramme
Actives
Interactions
Action
Resultat
Clic sur un noeud
Affiche le detail (flux amont, aval, trace complete)
Shift+Clic sur un module
Ouvre les Allocations nettes pour ce module
Molette / pinch
Zoom in/out
Drag sur le fond
Deplacer le diagramme (pan)
Recherche
Surbrillance du noeud correspondant
Boutons +/-
Zoom incremental
Bouton ↻
Reset du zoom
Export
Le Sankey peut etre exporte en PDF, XLSX (donnees tabulaires des flux), ou PowerBI (format compatible). Les boutons d'export sont dans la toolbar en haut a droite.
TCD (Tableau Croise Dynamique)
Le TCD est un tableau croise dynamique multi-dimensions permettant d'analyser les resultats du calcul ABC selon de nombreux axes. Il remplace l'ancien P&L statique par une vue entierement configurable.
Zones de configuration
La barre de controle du TCD est divisee en 4 zones :
Zone
Role
Description
▤ Lignes
Axe vertical
Champs affiches en lignes du tableau. Supporte la hierarchie et le multi-champs.
▥ Colonnes
Axe horizontal
Champs affiches en colonnes. Bouton ⇄ pour inverser lignes/colonnes.
∑ Mesures
Valeurs affichees
Choix des mesures a afficher dans chaque cellule (couts et/ou inducteurs).
⊞ Filtres
Filtrage des donnees
Filtres dynamiques multi-criteres sur n'importe quel champ.
Types de champs
6 types de champs peuvent etre utilises en lignes, colonnes ou filtres :
Icone
Type
Description
Exemple
◈
Dimension
Axes d'analyse du modele (hierarchiques)
Canal, Client, Produit, Direction
▣
Module
Type de module ABC
Nature, Ressource, Activite, Prestation
⚑
Attribut
Attributs des membres du modele
Region, Variable/Fixe, Priorite
⚡
Inducteur
Drivers de repartition utilises
Surface (m2), ETP, Nb tickets
◇
Periode
Periodes temporelles
Janvier 2024, Fevrier 2024
◇
Phase
Scenarios budgetaires
Reel 2024, Budget 2024
Multi-champs : Vous pouvez ajouter plusieurs champs en lignes et/ou colonnes pour creer des croisements multi-niveaux (ex: Canal en ligne 1 + Produit en ligne 2).
Mesures
Les mesures determinent les valeurs affichees dans chaque cellule du tableau. Elles sont organisees en 2 groupes pliables :
★ Couts (6 mesures)
Net retenu (par defaut) : cout net apres allocations entrantes et sortantes
Total : cout total (saisi + calcule)
Saisi : montant issu du Grand Livre
Calcule : montant recu par allocation
Entrant brut : total des flux entrants avant netting
Sortant brut : total des flux sortants avant netting
⚡ Inducteurs (dynamique)
Chaque driver defini dans le modele apparait comme mesure activable. Les valeurs affichees sont les quantites de driver associees a chaque croisement. Le groupe Inducteurs est replie par defaut ; cliquez sur le titre pour le deployer.
Vous pouvez activer plusieurs mesures simultanement. Le tableau affichera alors une sous-colonne par mesure active.
Filtres sur les champs (type Excel)
Chaque champ place en lignes ou colonnes dispose d'un bouton filtre ▼ directement sur sa pastille. Ce filtre fonctionne exactement comme dans un Tableau Croise Dynamique Excel :
Cliquez sur ▼ pour ouvrir le panneau de filtrage
Cochez / decochez les valeurs a afficher ou masquer
Pour les dimensions hierarchiques : decocher un parent decoche automatiquement ses enfants
Recherche : tapez dans le champ de recherche pour trouver rapidement une valeur
✓ Tout / ✗ Rien : selectionnez ou deselectionnez toutes les valeurs d'un coup
N0, N1, N2... : selectionnez uniquement un niveau hierarchique (ex: N0 = details, N2 = racines)
Appliquer : valide le filtre. Annuler : restaure l'etat precedent
Cliquer a l'exterieur du popup applique automatiquement le filtre (comme Excel)
Quand un filtre est actif sur un champ, le bouton ▼ s'affiche en surbrillance jaune pour indiquer visuellement qu'un filtrage est en cours.
Filtres globaux (zone Filtres)
En complement des filtres par champ, la zone ⊞ Filtres permet de filtrer sur des champs qui ne sont pas en lignes/colonnes :
Cliquez sur "+ Ajouter un filtre"
Choisissez le type de champ (Module, Periode, Phase, Dimension, Attribut, Inducteur)
Selectionnez une ou plusieurs valeurs
Selection hierarchique
Pour les dimensions et modules hierarchiques, cliquer sur un parent selectionne automatiquement tous ses enfants.
Gerer les filtres globaux
+ : ajouter une valeur supplementaire au filtre existant
× sur une valeur : retirer cette valeur
× a droite du filtre : supprimer le filtre entierement
Si un filtre ne renvoie aucune donnee, verifiez que les dimensions filtrees correspondent aux champs en lignes/colonnes. Par exemple, filtrer sur le module "Activite" ne renverra pas de donnees si les lignes utilisent la dimension "Canal" (qui n'est pas associee aux Activites).
Modes d'affichage
Option
Description
Montants
Valeurs absolues en euros (mode par defaut)
% de la ligne
Chaque cellule en pourcentage du total de sa ligne
% de la colonne
Chaque cellule en pourcentage du total de sa colonne
% du total
Chaque cellule en pourcentage du total general
Hierarchie
Affiche la structure parent/enfant des dimensions avec deplier/plier
🌡 Chaleur
Mise en forme conditionnelle : intensite de couleur proportionnelle au montant
Navigation dans le tableau
▼ / ▶ : deplier/plier un noeud parent (en lignes ou colonnes)
Tout deplier / Tout plier : deployer ou fermer toute l'arborescence
Filtrer les lignes : recherche textuelle rapide dans les libelles de lignes
Export
Le tableau est exportable en :
XLSX : fichier Excel avec mise en forme
CSV : fichier texte avec separateur point-virgule (compatible Excel FR)
Matrice de correspondance (Matching Grid)
La matrice de correspondance est l'outil central de construction du modele ABC en atelier. Elle permet de definir visuellement qui alloue a qui en 2 niveaux progressifs.
Workflow atelier en 5 etapes
1. BPMN Dessiner le process
2. Membres Deduire activites & prestations
3. Matching Qui alloue a qui ?
4. Drivers Quel inducteur ?
5. Calcul Poids & execution
Niveau 1 — Macro (Module × Module)
La vue initiale affiche tous les modules en lignes et en colonnes. Chaque cellule montre si des allocations existent entre ces 2 modules.
Affichage cellule
Signification
✓ 3/12
Chiffres X/Y : X = allocations avec driver assigne, Y = total allocations. Ici 3 allocations pretes sur 12 au total. Les 9 restantes sont en draft (sans driver).
✓ 5
Chiffre seul : toutes les allocations sont en draft (sans driver). Ici 5 allocations a completer.
Pas d'allocation. Cliquer pour ouvrir le detail et creer des correspondances.
Double-clic sur une cellule cochee pour descendre au detail membre par membre.
Niveau 2 — Detail (Membre × Membre)
En double-cliquant sur un croisement macro, on descend dans la grille detaillee avec les plans hierarchiques des sources (lignes) et destinations (colonnes).
Contenu des cellules
Cellule
Signification
✓
Coche verte + point vert : allocation avec driver assigne. Prete pour le calcul.
✓
Coche orange : allocation draft, sans driver. A completer (Ctrl+Clic + "Assigner driver").
75
Chiffre dans un groupe : nombre total d'allocations entre les details descendants de ce groupe source et de ce groupe destination. Replier les groupes pour voir les totaux agreges.
+
Pas d'allocation. Cliquer pour creer une allocation draft.
Point de couleur (bas-gauche) : annotation manuelle. 6 couleurs disponibles via clic droit.
Hierarchie et groupes
Les sources et destinations affichent leur plan hierarchique (groupes repliables) :
▼ / ▶ : cliquer pour deplier/replier un groupe
☰ : icone de groupe (les details N0 sont en dessous)
Cellules de groupe : affichent le nombre total d'allocations agreges pour tous les enfants
Replier lig. / Replier col. : boutons toolbar pour tout replier d'un coup
Principe Excel-like : selectionner puis agir
Comme dans Excel, la grille fonctionne en 2 temps :
Selectionner une ou plusieurs cellules (clic, Ctrl+Clic, Shift+Clic)
Agir sur la selection : cocher, colorier, assigner un driver, supprimer
Un clic ne modifie rien — il selectionne. La cellule active est surlignee en bleu fonce, et toute sa ligne et colonne sont teintees en bleu clair (cross-highlight) pour faciliter le reperage.
Volets figes (freeze panes)
Comme dans Excel, la grille a des volets figes :
Colonne source (gauche) : reste toujours visible quand on scrolle horizontalement
En-tetes destinations (haut) : restent toujours visibles quand on scrolle verticalement
Coin (haut-gauche) : toujours visible dans les 2 axes
Le ruban et la pagination restent fixes au-dessus de la grille
Raccourcis clavier
Touche
Action
Clic
Selectionner la cellule (cross-highlight ligne + colonne)
Le coloriage fonctionne sur toute cellule (vide ou cochee). C'est un outil d'annotation pour marquer visuellement les zones a discuter en seance, independamment de l'etat de l'allocation.
Ruban (bandeau au-dessus de la grille)
Organise en 6 groupes comme Excel/Visio, le ruban reste toujours visible :
Groupe
Contenu
Recherche
Filtre les membres par nom ou reference (sources et destinations)
Chaque en-tete possede une icone ▼ qui ouvre un filtre Excel-like :
Statistiques : nombre d'allocations, avec/sans driver
Tri : A→Z, Z→A, ou par nombre d'allocations
Visibilite : decocher pour masquer temporairement
Cross-highlight (surbrillance croisee)
Quand une cellule est selectionnee :
Toute la ligne est teintee en bleu clair
Toute la colonne est teintee en bleu clair
Le label source (gauche) et le header destination (haut) passent en fond bleu + gras
L'effet suit le focus et disparait a Escape
Infobulles
Au survol d'un label (800ms), une infobulle affiche : nom, reference, statut, dimensions, attributs et espaces organisationnels. Desactivables via "Infobulles" dans le ruban.
Coloriage de cellules (6 couleurs)
Les couleurs sont des annotations visuelles libres applicables a toute cellule (vide ou cochee). 3 methodes :
Clic droit → palette visuelle contextuelle
Touches 1 a 6 → application instantanee sur la selection
Touche 0 → effacer la couleur
Touche
Couleur
Usage suggere
1
Rouge
Probleme identifie, a revoir
2
Orange
Question ouverte, en attente
3
Jaune
En discussion, pas tranche
4
Vert
Confirme par le client
5
Bleu
Information complementaire necessaire
6
Violet
Cas particulier, exception
0
✕
Effacer la couleur
Les couleurs sont persistees en base. Le filtre 🎨 Couleurs dans le ruban permet de ne voir que les cellules d'une couleur donnee.
Navigation croisee (groupe Naviguer dans le ruban)
Quand une seule cellule est selectionnee, le groupe Naviguer du ruban s'active avec 2 boutons :
Bouton
Action
▢ BPMN
Ouvre le diagramme BPMN contenant les elements lies a cette paire source/destination. Si une connexion BPMN existe, elle clignote pour attirer l'attention.
⚙ Driver
Ouvre la page Inducteurs et selectionne le driver assigne a cette allocation. Affiche la matrice de valeurs du driver.
La navigation fonctionne aussi en sens inverse : depuis le BPMN, cliquer sur "Matching" dans les proprietes d'un element ouvre la grille sur la bonne paire de modules. Depuis un driver, le bouton "Matching" filtre les allocations utilisant cet inducteur.
Flux de travail complet (BPMN ↔ Matching ↔ Modele)
Le systeme de navigation croisee permet de passer fluidement d'une vue a l'autre sans perdre le contexte :
De
Vers
Comment
BPMN
Matching
Bouton "☷ Matching" dans les proprietes d'un element ou d'une connexion
BPMN
Modele
Lier un element a un module cree automatiquement le membre
Matching
BPMN
Bouton "▢ BPMN" dans le ruban (groupe Naviguer)
Matching
Driver
Bouton "⚙ Driver" ou D pour ouvrir le detail de l'inducteur
Matching
Modele
Panneau coulissant ✎ pour editer les membres inline
Driver
Matching
Bouton "☷ Matching" pour voir toutes les allocations du driver
Membre
Matching
Bouton "☷ Matching" pour voir les allocations du membre
Raccourci en seance : double-clic sur une cellule cochee ouvre directement le dialog d'assignation de driver. Double-clic sur une cellule vide cree l'allocation immediatement. La selection + Espace est le workflow le plus rapide pour cocher en masse.
3 statuts (cycle de vie des elements)
Chaque membre et chaque allocation suit un cycle en 3 etapes :
Statut
Icone
Dans le modele ?
Calculable ?
Supprimable ?
Brouillon
✎ gris
Non
Non
Oui (1 clic)
Propose
★ violet
Oui, temporaire
Oui (test)
Oui (1 clic)
Valide
✓ vert
Oui, definitif
Oui
Non (repasser en brouillon d'abord)
Le cycle est : cliquer sur l'icone statut → Brouillon → Propose → Valide → Brouillon. En masse : boutons "✎ Brouillon", "★ Proposer", "✓ Valider" dans le panneau.
Panneau d'edition des membres (panel coulissant)
Cliquer sur ✎ Nom du module dans le coin de la grille ouvre un panneau lateral pour editer les membres directement depuis la matrice :
Double-clic sur le libelle pour editer inline
Glisser-deposer pour reorganiser (dessus = frere, milieu = enfant)
Le BPMN et le modele ABC sont synchronises bidirectionnellement. Chaque action dans le BPMN se reflete dans les allocations du modele, et inversement. L'editeur BPMN est concu comme un mini-Visio/PowerPoint integre pour le travail en seance.
Workflow en atelier (5 etapes)
1. BPMN Dessiner le process
2. Membres Deduire du BPMN
3. Matching Qui alloue a qui ?
4. Drivers Quel inducteur ?
5. Calcul Poids & execution
⚡ Generer depuis ABC
Le bouton "⚡ Generer depuis ABC" dans la toolbar cree automatiquement un diagramme Master :
Un bloc par module (NATURE, RESSOURCE, ACTIVITE, PRESTATION, METIER...) avec la couleur du module
Des fleches entre modules pour chaque paire ayant des allocations, avec le nombre d'allocations en label
La couleur des fleches indique le taux de completion : vert si >80% ont un driver, orange si 30-80%, gris si <30%
Double-clic sur un bloc module → ouvre le diagramme detaille avec les membres en taches
Ideal en debut d'atelier pour montrer la chaine d'allocation existante et identifier les zones a completer.
BPMN → Auto-creation de membres
Quand on lie un element BPMN a un module (panneau proprietes), l'outil propose de creer automatiquement le membre :
Selectionner une tache → choisir un module dans le panneau droit
Un bandeau jaune propose : "Creer [nom de la tache] dans [module] ?"
Cliquer "Oui" → le membre est cree avec la ref en majuscules, auto-tagge avec l'espace organisationnel actif
Toutes les connexions existantes de cet element sont verifiees : si l'autre extremite a aussi un membre, une allocation draft est creee automatiquement
BPMN → Allocation (3 phases progressives)
Phase
Action
Resultat
1. Connexion simple
Creer une fleche entre 2 taches liees a des modules
Allocation draft creee (sans driver)
2. Driver generique
Dans le panneau, choisir "⚡ Driver generique"
DRV_GENERIC assigne (a affiner plus tard)
3. Driver precis
Choisir un driver specifique dans la liste
Driver definitif assigne, label mis a jour sur la fleche
Matching ↔ BPMN (synchronisation)
Les actions dans la grille de matching se refletent dans le BPMN et inversement :
Action
Direction
Effet
Cocher une cellule dans le matching
Matching → BPMN
Si les 2 membres ont des elements BPMN, une connexion est creee ou liee a l'allocation
Assigner un driver dans le matching
Matching → BPMN
Le statut passe a "validated", la connexion BPMN passe en vert continu
Creer une fleche dans le BPMN
BPMN → Matching
Si les elements sont lies a des membres, une allocation draft apparait dans la grille
Changer le statut d'une connexion BPMN
BPMN → Matching
Le style visuel de la connexion change (couleur, trait)
Ruban de style (toolbar BPMN)
Au-dessus du canvas, un ruban style Visio/PowerPoint permet de formater rapidement les elements et connexions :
Section
Options
Couleur de fond
Palette de 12-24 couleurs predefinies + couleur personnalisee
Couleur de trait
Meme palette pour les fleches et bordures
Epaisseur
4 niveaux : fin (1px), normal (2px), epais (3px), tres epais (4px)
En desactivant certains calques, on peut par exemple ne voir que les allocations validees pour avoir une vue propre du modele final, ou ne voir que les drafts pour identifier ce qui reste a confirmer.
Ports dynamiques (ancres de connexion)
Survol d'un element : des ancres (cercles indigo avec halo) apparaissent sur les 4 bords (N, S, E, O)
Zone de capture elargie (18px invisible) pour faciliter le clic
Feedback visuel : l'ancre la plus proche du curseur pendant le drag passe en vert
Non-conflit : cliquer sur un port cree une connexion (pas un deplacement de l'element)
Ports restent visibles 600ms apres avoir quitte l'element
Swimlanes (couloirs de processus)
Les swimlanes sont des conteneurs logiques lies aux modules ABC, comme dans MS Visio :
Un swimlane "DAF" → lie au module RESSOURCE ou ACTIVITE
Deplacement : bouger un swimlane deplace toutes les taches a l'interieur
Collapse : replier un swimlane masque son contenu mais conserve les connexions (redirigees vers le bord du header)
Imbrication : un swimlane peut contenir d'autres swimlanes (organisation matricielle)
Style : couleur de fond, bordure, transparence, orientable horizontal ou vertical
Recherche et focus
Ctrl+F ou la barre de recherche dans le ruban : tape un nom de tache, connexion ou swimlane :
L'element trouve est surbrillance avec un halo anime
Le canvas zoome et centre automatiquement sur l'element
Les fleches ▲▼ naviguent entre les resultats si plusieurs matchent
Raccourcis clavier BPMN
Raccourci
Action
Ctrl+Z
Annuler (undo, max 50 niveaux)
Ctrl+Y
Retablir (redo)
Ctrl+C / Ctrl+V
Copier / Coller elements selectionnes
Ctrl+A
Selectionner tous les elements
Ctrl+F
Ouvrir la recherche
Suppr / Delete
Supprimer la selection
Shift+Clic
Creer une connexion rapide (clic source puis clic destination)
Ctrl+Clic
Multi-selection d'elements
Echap
Deselectionner tout
+ / -
Zoom avant / arriere
Ctrl+0
Zoom pour tout voir (fit-all)
⚡ Sync BPMN depuis le matching (layout bipartite)
Depuis la vue detail de la matrice de correspondance (ex: ACTIVITE → PRESTATION), le bouton "⚡ Sync BPMN" dans le ruban genere un sous-diagramme BPMN specifique a cette paire :
Element genere
Disposition
Correspondance
Taches source
Colonne gauche (x=80)
1 tache par membre du module source ayant au moins 1 allocation
Taches destination
Colonne droite (x=450)
1 tache par membre du module destination ayant au moins 1 allocation
Connexions
Fleches gauche → droite
1 fleche par allocation, couleur = statut (gris/violet/vert)
Incremental : le sync ne reecrit pas tout. Les elements existants sont conserves (positions modifiees par l'utilisateur preservees). Seuls les nouveaux membres/allocations sont ajoutes. Les connexions obsoletes (allocation supprimee) sont nettoyees.
Apres la synchronisation, l'outil propose d'ouvrir le diagramme dans l'editeur BPMN. On peut alors :
Reorganiser les taches visuellement (drag & drop)
Ajouter des swimlanes pour regrouper par service
Enrichir le diagramme avec des annotations, events, gateways
Les connexions restent liees aux allocations : modifier le statut dans le BPMN se reflete dans le matching
Swimlanes dans le BPMN genere
Pour une meilleure lisibilite des diagrammes generes depuis le matching, il est recommande d'ajouter des swimlanes apres la generation :
1 swimlane par module : "Sources (ACTIVITE)" a gauche, "Destinations (PRESTATION)" a droite
Deplacer les taches dans leur swimlane respectif
Le swimlane contient les taches : deplacer le swimlane deplace toutes ses taches
Replier le swimlane masque les taches mais conserve les connexions vers l'exterieur
Pour les gros modeles (100+ membres), le diagramme genere peut etre dense. Utilisez les swimlanes imbriques pour regrouper par groupe hierarchique, puis repliez les groupes peu importants.
Resume : 2 niveaux de generation BPMN
Niveau
Source
Bouton
Resultat
Master
Modele ABC complet
"⚡ Generer depuis ABC" (toolbar BPMN)
1 bloc par module + fleches entre modules avec compteurs
Detail
Paire source→destination dans le matching
"⚡ Sync BPMN" (ruban matching)
Layout bipartite : 1 tache par membre + fleches = allocations
Diagramme par espace organisationnel
Quand un espace organisationnel est selectionne dans le bandeau :
Les elements non rattaches a cet espace apparaissent en transparence (25%)
Les nouveaux elements crees sont auto-tagges avec l'espace actif
La barre de progression dans la page "Organisation" montre l'avancement par espace : BPMN → Membres → Matching → Drivers → Calcul
Espaces organisationnels (Tags)
Les espaces organisationnels representent les directions et services de l'entreprise. Ils permettent de structurer le travail en atelier par service et de verifier la couverture du modele.
Concept
Un espace = une direction ou un service de l'organigramme (DAF, DRH, DSI, Production...). Les espaces sont hierarchiques : une direction peut contenir des sous-services.
3 usages principaux
Usage
Description
Atelier cible
Selectionner un espace dans le bandeau → ne voir que les elements qui concernent ce service. Ideal pour focaliser la seance sur un service specifique.
Couverture
La matrice espaces × modules montre quels services ont ete couverts et lesquels manquent. Les zones non rattachees apparaissent en rouge.
Jointures
Les elements partages entre plusieurs services (multi-tag) revelent les couts transversaux et les cles d'allocation potentielles.
Auto-tagging
Quand un espace est selectionne dans le bandeau, tout nouvel element cree (membre de module, membre de dimension, element BPMN) est automatiquement rattache a cet espace. Cela garantit la tracabilite sans effort supplementaire.
Gestion des espaces
Acces via Outils → Espaces organisationnels. La page dediee affiche :
Organigramme : arbre hierarchique des directions/services avec edition inline
Matrice de couverture : croisement espaces × modules avec barres de progression
Statistiques : nombre d'entites, assignations, elements partages, couverture BPMN
Statuts des rattachements
Chaque rattachement a un statut qui suit le workflow de validation :
Brouillon — Rattachement propose en atelier (par defaut)
Valide — Confirme par le responsable du service
Applique — Integre dans le modele de calcul final
Performance & Web Worker
Calcul en arriere-plan (Web Worker)
Le moteur de calcul supporte l'execution dans un Web Worker, un thread d'arriere-plan du navigateur. Cela permet de garder l'interface completement reactive pendant le calcul, meme sur des modeles volumineux (milliers de membres, dizaines de milliers de regles).
Comment ca fonctionne
Au lancement du calcul, la base SQLite est exportee en binaire et transferee au Worker (copie zero-copy via Transferable)
Le Worker charge sql.js de facon autonome et execute tout le pipeline : etapes d'allocation, analyse des flux, cube PNL
Le Worker envoie des messages de progression en temps reel (etape en cours, nombre de contributions, etc.)
A la fin, la base modifiee est retransferee au thread principal et sauvegardee dans IndexedDB
Le Worker est completement isole : si le calcul echoue dans le Worker, la base de donnees du thread principal reste intacte (pas de corruption possible).
Compatibilite navigateur
La disponibilite du Web Worker depend du navigateur et du mode d'ouverture du fichier :
Mode
Navigateur
Web Worker
UI pendant calcul
http://localhost
Tous (Chrome, Edge, Firefox, Safari)
✓ Actif
Reactive
file://
Firefox
✓ Actif
Reactive
file://
Chrome, Edge
✗ Indisponible
Bloquee pendant le calcul
Recommandation : Pour les gros modeles (1000+ membres), utilisez Firefox en mode fichier local (file://) ou un serveur local (localhost) pour beneficier du Web Worker et d'une interface reactive.
Detection automatique
L'outil detecte automatiquement si le Web Worker est disponible :
Worker disponible : le calcul s'execute en arriere-plan. Un message "Calcul via Web Worker (UI non bloquee)" apparait dans la console du navigateur.
Worker indisponible : le calcul s'execute de facon synchrone sur le thread principal (comportement classique). L'interface peut etre momentanement figee.
Fallback automatique : si le Worker echoue au demarrage (chargement de sql.js impossible, etc.), le calcul bascule automatiquement en mode synchrone.
Optimisations du moteur
Independamment du Web Worker, le moteur de calcul integre plusieurs optimisations :
Prepared statements batch : les insertions en masse utilisent db.prepare() avec stmt.bind()/step()/reset() au lieu d'appels db.run() individuels (5-8x plus rapide)
Buffers JS : les resultats d'allocation, contributions nettes et cube PNL sont accumules en memoire avant un flush unique
Dirty-set propagation : la propagation des dimensions dans le cube PNL utilise un ensemble "dirty" qui retrecit a chaque passe au lieu d'iterer sur tous les resultats
Seuil BFS dynamique : les branches insignifiantes du BFS (contributions nettes) sont elaguees avec un seuil proportionnel (max(1€, total × 0.01%))
Transaction unique : tout le calcul s'execute dans une seule transaction SQLite avec un seul save IndexedDB a la fin
Lancement via lancer.bat
Le fichier lancer.bat (Windows) ouvre automatiquement l'application dans le navigateur par defaut. L'outil fonctionne integralement en local sans serveur.
Pour beneficier du mode localhost (et du Web Worker sur tous les navigateurs), vous pouvez installer Python et lancer :
cd chemin/vers/abc-costing-tool
python -m http.server 8080
# Puis ouvrir http://127.0.0.1:8080/index.html
⚙ Architecture technique
Stack technologique
Composant
Technologie
Role
Frontend
HTML5 / CSS3 / JavaScript ES6+
Interface utilisateur 100% client-side
Base de donnees
sql.js (SQLite compile en WASM)
Stockage structure en memoire + IndexedDB
Persistance
IndexedDB
Sauvegarde automatique de la base SQLite
Visualisation
D3.js v7
Sankey, BPMN, graphiques SVG
Excel I/O
SheetJS (XLSX) v0.20.3
Import/export XLSX, parsing CSV
Calcul arriere-plan
Web Worker
Moteur ABC non-bloquant
Organisation des fichiers (24 modules JS)
Fichier
Lignes
Module
Role
db.js
~3500
DB
Schema, CRUD, migrations, queries
allocation-engine.js
~1500
AllocationEngine
Moteur de calcul (8 types, SCC, convergence)
calc-worker.js
~1400
Worker
Copie du moteur pour Web Worker
driver-manager.js
~3400
DriverManager
Matrice Excel-like des drivers
matching-grid.js
~1800
MatchingGrid
Matrice de correspondance
bpmn-editor.js
~4000
BPMNEditor
Editeur BPMN avec ruban
sankey-view.js
~2000
SankeyView
Visualisation Sankey D3
data-manager.js
~3000
DataManager
Modules, dimensions, membres
gl-import.js
~950
GLImport
Import GL multi-fichiers
formula-engine.js
~600
FormulaEngine
Compilateur formules Excel-like
tag-manager.js
~600
TagManager
Espaces organisationnels
stress-test.js
~1600
StressTest
Tests de charge, 8 types
app.js
~200
App
Orchestrateur, navigation, toasts
Flux de donnees
CSV/XLSX Import
sql.js SQLite en memoire
IndexedDB Persistance locale
Web Worker Calcul ABC
D3.js / DOM Visualisation
☍ Schema de base de donnees & Power BI
Version du schema : v11. 32 tables SQLite organisees en 6 groupes fonctionnels. La base est exportable au format .sqlite via l'onglet Imports/Exports.
Connexion Power BI : Pour interroger la base depuis Power BI Desktop, utilisez le connecteur SQLite (ODBC) ou le plugin SQlite for Power BI. Pointez vers le fichier .sqlite exporte. Toutes les tables ci-dessous sont directement requetables en SQL.
Groupe 1 — Structure du modele
modules — Types d'objets de cout (NATURE, RESSOURCE, ACTIVITE...)
Colonne
Type
Defaut
Description
reference
TEXT PK
—
Identifiant unique du module (ex: NATURE, RESSOURCE)
name
TEXT NOT NULL
—
Nom affiche
description
TEXT
''
Description libre
order_in_group
INTEGER
0
Ordre dans la chaine d'allocation (0 = premier)
color
TEXT
'#888888'
Couleur hex pour l'UI et les graphiques
icon
TEXT
''
Icone optionnelle
is_entry_point
INTEGER
0
1 = module d'entree GL (un seul a la fois)
module_members — Elements (centres de cout, activites, prestations...)
Colonne
Type
Defaut
Description
id
INTEGER PK AUTO
—
Identifiant auto-incremente
module_reference
TEXT NOT NULL
—
FK vers modules.reference
dim_key
TEXT NOT NULL
—
Cle unique au sein du module (code metier)
label
TEXT
—
Libelle affiche
description
TEXT
''
Description libre
order_in_group
INTEGER
0
Ordre d'affichage
parent_member_id
INTEGER
NULL
FK vers module_members.id (hierarchie parent)
level
INTEGER
0
Niveau dans la hierarchie (0 = racine)
status
TEXT
'validated'
Statut : draft, proposed, validated
proposed_by
INTEGER
NULL
ID tag de l'UO qui a propose ce membre
UNIQUE(module_reference, dim_key). Index : idx_mm_module, idx_mm_dimkey.
dimensions — Axes d'analyse transversaux
Colonne
Type
Defaut
Description
reference
TEXT PK
—
Identifiant unique (ex: REGION, PRODUIT)
name
TEXT NOT NULL
—
Nom affiche
description
TEXT
''
Description
hierarchy_levels
INTEGER
3
Nombre de niveaux hierarchiques
dim_members — Valeurs d'une dimension (regions, produits...)
Colonne
Type
Defaut
Description
id
INTEGER PK AUTO
—
ID auto
dimension_reference
TEXT NOT NULL
—
FK vers dimensions.reference
reference
TEXT NOT NULL
—
Code du membre dimension
parent_reference
TEXT
—
Reference du parent (hierarchie)
name
TEXT NOT NULL
—
Libelle
description
TEXT
''
Description
level
INTEGER
0
Niveau hierarchique
order_in_group
INTEGER
0
Ordre d'affichage
UNIQUE(dimension_reference, reference). Index : idx_dm_dim.
module_dimensions — Association modules ↔ dimensions
PK composite. Index : idx_pnl_period. Ideal pour Power BI — permet de construire un TCD avec n'importe quelle combinaison de dimensions en lignes/colonnes.
member_dim_attribution — Attribution dimensionnelle des couts
Colonne
Type
Description
period_reference
TEXT
Periode
scenario_reference
TEXT
Scenario
member_id
INTEGER
FK vers module_members.id
attribute_name
TEXT
Nom de l'attribut
attribute_value
TEXT
Valeur de l'attribut
contribution_pct
REAL
% de contribution
PK composite (period, scenario, member_id, attribute_name, attribute_value). Index : idx_mda_period.
Groupe 4 — BPMN
bpmn_diagrams — Diagrammes de processus
Colonne
Type
Defaut
Description
id
INTEGER PK AUTO
—
ID auto
name
TEXT NOT NULL
—
Nom du diagramme
description
TEXT
''
Description
parent_diagram_id
INTEGER
NULL
FK vers bpmn_diagrams.id (hierarchie)
level
INTEGER
1
0=master, 1=principal, 2=sous-processus
parent_element_id
INTEGER
NULL
Element parent dans le diagramme parent
tag_id
INTEGER
NULL
FK vers tags.id (entite organisationnelle liee)
created_at
TEXT
—
Date creation
updated_at
TEXT
—
Date derniere modification
bpmn_elements — Elements graphiques (taches, swimlanes, evenements...)
tag_assignments — Assignations tag ↔ entite (polymorphe)
Colonne
Type
Defaut
Description
id
INTEGER PK AUTO
—
ID auto
tag_id
INTEGER NOT NULL
—
FK vers tags.id
entity_type
TEXT NOT NULL
—
Type entite : module_member, bpmn_element, allocation
entity_id
INTEGER NOT NULL
—
ID de l'entite concernee
status
TEXT
'draft'
Statut : draft, proposed, validated
note
TEXT
''
Note
created_by
TEXT
''
Auteur
created_at
TEXT
datetime('now')
Date creation
UNIQUE(tag_id, entity_type, entity_id). Index : idx_ta_tag, idx_ta_entity.
periods — Periodes de reference
Colonne
Type
Description
reference
TEXT PK
Identifiant (ex: 2024-01)
name
TEXT NOT NULL
Nom affiche (ex: Janvier 2024)
scenarios — Scenarios de simulation
Colonne
Type
Description
reference
TEXT PK
Identifiant (ex: REEL, BUDGET)
name
TEXT NOT NULL
Nom affiche
meta — Metadonnees cle/valeur
Colonne
Type
Description
key
TEXT PK
Cle (ex: schema_version, clientName)
value
TEXT
Valeur
app_state — Etat applicatif persistant
Colonne
Type
Description
key
TEXT PK
Cle d'etat
value
TEXT
Valeur
Groupe 6 — Tracabilite des imports
import_files — Historique de tous les fichiers importes
Colonne
Type
Defaut
Description
id
INTEGER PK AUTO
—
ID auto
filename
TEXT NOT NULL
—
Nom du fichier
filepath
TEXT
''
Chemin complet
category
TEXT
'other'
Categorie : gl, costs, bulk, allocations, database, settings, other
target_module
TEXT
''
Module cible si applicable
target_section
TEXT
''
Section cible
file_size
INTEGER
0
Taille en octets
row_count
INTEGER
0
Nombre de lignes importees
format
TEXT
''
Format : csv, xlsx, json, sqlite
notes
TEXT
''
Notes
status
TEXT
'active'
Statut : active, deleted
imported_at
TEXT
datetime('now')
Date/heure d'import
Requetes Power BI recommandees
1. Couts par module et membre SELECT m.reference as module, mm.dim_key, mm.label, mfs.entered_cost, mfs.calculated_cost, mfs.total_cost
FROM member_flow_summary mfs
JOIN module_members mm ON mfs.member_id = mm.id
JOIN modules m ON mm.module_reference = m.reference
WHERE mfs.period_reference = '2024-01' AND mfs.scenario_reference = 'REEL'
2. Flux d'allocation source → destination SELECT src.label as source, dst.label as destination, ar.allocated_amount, ar.driver_reference
FROM allocation_results ar
JOIN module_members src ON ar.source_member_id = src.id
JOIN module_members dst ON ar.destination_member_id = dst.id
WHERE ar.period_reference = '2024-01'
3. Cube PnL pour TCD Power BI SELECT * FROM pnl_cube
WHERE period_reference = '2024-01' AND scenario_reference = 'REEL'
4. Grand Livre avec dimensions SELECT gl.account_code, gl.label, gl.amount, gl.entry_date,
gm.dimension_reference, gm.dim_member_reference
FROM gl_entries gl
LEFT JOIN gl_dim_mappings gm ON gl.id = gm.gl_entry_id
WHERE gl.period_reference = '2024-01'
5. Matrice d'allocation avec drivers SELECT src.label as source, dst.label as destination,
a.driver_reference, d.name as driver_name, a.driver_weight, a.driver_quantity
FROM allocations a
JOIN module_members src ON a.source_member_id = src.id
JOIN module_members dst ON a.destination_member_id = dst.id
LEFT JOIN drivers d ON a.driver_reference = d.reference
WHERE a.period_reference = '2024-01' AND a.status = 'validated'
⚙ Moteur de calcul (detail technique)
Algorithme d'execution
determineSteps() : analyse le graphe d'allocations, detecte les cycles (Tarjan SCC), genere l'ordre d'execution topologique
stepLoadGL() : charge les ecritures GL dans le module d'entree (is_entry_point = 1)
stepAllocate() : pour chaque paire source→destination, calcule les montants selon le type de driver
stepSelfAllocate() : gere les allocations intra-module (convergence iterative, max 20 iterations)
stepCycleResolve() : resoud les cycles SCC par amortissement (1/(iter+1))
buildFlowAnalysis() : construit les flux nets, contributions, PnL cube
Conservation des couts
Regle absolue : le total du GL + couts saisis doit etre egal au total du dernier module. Aucune perte, aucune creation de monnaie. Tolerance = 1 EUR.
Mecanismes de conservation :
Type 0 (Ponderation) : si tous les poids = 0 → fallback equal split (1/N)
Type 1 (Volume) : si aucune driver_value → fallback poids puis equal split
Type 2 (Forfaitaire) : montants fixes utilises comme poids proportionnels (toujours 100% distribue)
Type 6 (Taux/Taxe) : le taux est une metadonnee, 100% du srcTotal est distribue
srcTotal negatif : propague le deficit avec equal split si poids = 0
Seuils
Constante
Valeur
Usage
CONVERGENCE_THRESHOLD
0.01 EUR
Seuil minimum pour continuer les iterations
MAX_ITERATIONS
20
Self-allocate et cycle-resolve
NET_CONTRIBUTION_MIN
1.0 EUR
Pruning BFS dans les contributions nettes
⚙ API JavaScript publique
Tous les modules sont accessibles depuis la console du navigateur pour le debug et les scripts avances.
// Generer des donnees de test
StressTest.generateData();
// Lancer le calcul
AllocationEngine.runCalculation();
// Verifier la conservation
DB.getVerificationData('2024-01', 'BUDGET');
// Exporter la base
DB.exportDB(); // telecharge un fichier .json
Ajouter : cumule avec l'existant, cree un lot trace
Remplacer ce fichier : supprime le lot precedent du meme nom, archive l'ancienne version
Remplacer tout : efface tout le GL de la periode/scenario
Doublons : detection post-import (meme compte + montant + periode dans 2 lots differents)
Exports disponibles
Export Matching Excel : fichier XLSX 5 onglets auto-porteur (Matching, Plan source, Plan destination, Inducteurs, Detail allocations)
Export BPMN en PNG : capture du diagramme BPMN courant au format image
Export modele complet XLSX : fichier 13 feuilles couvrant l'ensemble du modele (modules, dimensions, membres, GL, allocations, drivers, etc.)
☰ Gestionnaire de fichiers importes
Le gestionnaire de fichiers offre une vue centralisee de tous les fichiers importes dans l'application. Il trace automatiquement chaque import avec son nom, sa date, sa taille, le module cible et le nombre de lignes.
Acces
Menu Donnees > Fichiers importes dans la barre de navigation
Depuis le Centre Import/Export via le lien en bas de page
Bouton ☰ Fichiers dans le ruban du Centre I/O
Categories de fichiers suivis
Categorie
Description
Module source
Grand Livre (GL)
Ecritures comptables importees via Import GL
GLImport
Couts saisis
Couts charges directement dans un module
CostImport
Import en masse
Modules, membres, dimensions, drivers, attributs
BulkImport
Allocations
Regles d'allocation importees
MatchingGrid
Bases SQLite
Fichiers .sqlite restaures ou charges
DB.importDB
Parametres
Fichiers JSON de parametres
Settings
Actions disponibles
Charger une base SQLite externe : selectionner un fichier .sqlite depuis n'importe quel dossier de votre ordinateur pour remplacer la base courante
Importer un fichier (tout type) : selectionner un fichier CSV, XLSX, JSON ou SQLite. Un dialogue propose le routage vers le bon module d'import
Supprimer / Restaurer : marquer un fichier comme supprime ou le restaurer. Les fichiers supprimes peuvent etre purges definitivement
Lots GL (GL Batches)
Les fichiers GL sont traces avec un niveau de detail supplementaire via le systeme de lots :
Versioning : chaque reimport du meme fichier cree une nouvelle version (v1, v2...)
Restauration : possibilite de revenir a une version anterieure
🎨 Parametres d'apparence Sankey
Le diagramme Sankey est entierement personnalisable via Parametres > Sankey — Apparence.
Parametres disponibles
Parametre
Description
Defaut
Opacite des liens
Transparence de base des flux (0-100%)
50%
Intensite surbrillance
Force du contraste quand un noeud est survole (0-100%)
60%
Largeur des noeuds
Epaisseur des barres de noeuds en pixels
14px
Rayon des coins
Arrondi des coins des noeuds
2px
Epaisseur min. des liens
Largeur minimum des flux en pixels
1.5px
Bordure des noeuds
Afficher/masquer le contour des barres
Active
Bandes de colonnes
Bandes alternees par module pour la lisibilite
Active
Animations
Transitions fluides au survol et au changement
Active
Budget de noeuds
Le systeme de split par module utilise un budget total de 80 noeuds reparti entre tous les modules. Cela garantit que le diagramme reste lisible meme avec de nombreux modules. Le budget est recalcule automatiquement pour trouver le meilleur compromis entre detail et lisibilite.
Formule de surbrillance
L'intensite de surbrillance controle le dimming des elements non lies :
0% : aucun dimming, tous les flux restent visibles
100% : dimming maximal, seuls les flux connectes au noeud survole sont visibles
60% (defaut) : bon equilibre entre focus et contexte
⇄ Exports filtres (partiels)
Le Centre Import/Export permet des exports partiels via les filtres du ruban :
Filtres disponibles
Module : selectionner un module specifique pour exporter uniquement ses membres ou ses couts
Driver : selectionner un inducteur pour exporter uniquement ses valeurs
Boutons d'export partiel
Bouton
Description
Prerequis
★ Membres
Exporte les membres du module selectionne (CSV)
Module selectionne
€ Couts
Exporte les ecritures GL du module pour la periode courante
Module selectionne
☍ Driver
Exporte les valeurs du driver selectionne
Driver selectionne
☰ Fichiers
Ouvre le gestionnaire de fichiers importes
—
⌨ Raccourcis clavier
Globaux
Raccourci
Action
Ctrl+S
Sauvegarder le driver en cours d'edition
Ctrl+Z
Annuler (BPMN)
Ctrl+Y
Retablir (BPMN)
Matrice des drivers
Raccourci
Action
↑↓←→
Navigation cellule par cellule
Tab
Cellule suivante (droite puis ligne suivante)
Enter
Cellule suivante (bas)
F2
Editer la cellule selectionnee
Delete
Effacer la valeur
Ctrl+C
Copier (TSV)
Ctrl+V
Coller depuis Excel
Dimensions (arbre)
Raccourci
Action
↑↓
Naviguer dans l'arbre
←→
Replier/Deplier un groupe
Enter
Editer le nom du membre
F2
Editer la reference
Delete
Supprimer la selection
Ctrl+A
Tout selectionner
Ctrl+V
Coller depuis Excel (REF Tab NOM Tab PARENT)
Home / End
Premier / Dernier element
Matrice de correspondance
Raccourci
Action
Espace
Cocher/Decocher la cellule
D
Assigner un driver
S
Cycler le statut (draft → propose → valide)
1-6
Appliquer une couleur
0
Effacer la couleur
Delete
Supprimer l'allocation
Ctrl+Clic
Multi-selection
Shift+Clic
Selection par plage (de la derniere cellule a celle-ci)
N
Ajouter/modifier une note (max 50 caracteres)
I
Activer/desactiver les infobulles d'entete
W
Activer/desactiver le retour a la ligne des entetes
BPMN
Raccourci
Action
Ctrl+Z / Ctrl+Y
Annuler / Retablir
Delete
Supprimer l'element selectionne
Ctrl+Clic
Multi-selection
Shift+Clic
Creer une connexion (depuis un element)
Ctrl+F
Rechercher un element
Cliquer-glisser sur le canvas
Selection lasso (rectangle de selection). Les elements dans le rectangle sont multi-selectionnes
⚙ Parametres
La page Parametres regroupe l'ensemble des options de configuration de l'application, organisees en sections.
Sections disponibles
Section
Contenu
General
Nom du projet, langue, devise, mode debug
Affichage
Theme, format des nombres, decimales
BPMN
Grille, snap, minimap, legende, taille des couloirs, cap connexions
Export
Format par defaut (CSV/XLSX), separateur, encodage
Base de donnees
Taille IndexedDB, purge, sauvegarde automatique
Parametres BPMN
Grille & Snap : activer/desactiver l'alignement sur la grille
Minimap : afficher la carte miniature de navigation
Legende : afficher/masquer la legende des formes
Taille couloirs : hauteur et largeur par defaut des lanes
Cap connexions : nombre maximal de connexions par element
Import / Export de parametres
Les parametres peuvent etre exportes en JSON pour les partager entre utilisateurs ou sauvegarder une configuration. Utilisez le bouton Importer pour charger un fichier JSON de parametres.
Reinitialisation
Le bouton Reinitialiser restaure tous les parametres a leurs valeurs par defaut. Cette action ne supprime pas les donnees du modele.
Le mode debug (section General) active l'affichage de logs detailles dans la console du navigateur, utile pour le diagnostic.
Zone de danger
La section Zone de danger regroupe les actions destructives qui modifient ou suppriment l'integralite des donnees.
Action
Description
Nouveau projet vide
Cree une base de donnees vide contenant uniquement le schema, les periodes et les scenarios. Ideal pour demarrer un nouveau modele ABC depuis zero.
Reset + demo
Reinitialise la base de donnees avec des donnees de demonstration (modules exemples, membres, allocations).
Tout purger
Supprime IndexedDB, localStorage, caches Service Worker. Purge totale irreversible.
Ces actions necessitent une double confirmation et sont irreversibles. Toutes les donnees du modele en cours seront definitivement perdues.
Stockage de la base
La base SQLite est stockee dans IndexedDB du navigateur (base: abc_costing_tool, store: database, cle: main). Elle n'est pas accessible directement comme un fichier sur le disque. Pour l'obtenir en tant que fichier .sqlite, utilisez Outils → Exporter la base.
Connexion Excel via ODBC (lecture de la base SQLite)
Pour lire la base SQLite exportee directement dans Excel via Power Query :
Database Name : chemin vers le fichier .sqlite exporte
OK
Connexion depuis Excel
Donnees → Obtenir des donnees → Depuis d'autres sources → Depuis ODBC
Selectionner le DSN SQLite_ABC dans la liste deroulante
Quand la fenetre d'authentification apparait → cliquer sur "Base de donnees" dans le panneau de gauche
Laisser tous les champs vides (pas de login/mot de passe pour SQLite)
Cliquer Se connecter
Selectionner les tables souhaitees (modules, module_members, allocations, etc.)
Important : si Excel affiche "Vous n'avez pas specifie le nom d'utilisateur", cliquez bien sur "Base de donnees" (et non "Par defaut" ou "Windows") dans le panneau gauche de la fenetre d'authentification. SQLite n'a pas de systeme d'authentification.
Tables principales
Table
Contenu
modules
Liste des modules (Nature, Ressource, Activite...)
module_members
Membres de chaque module avec couts et niveaux
allocations
Matrice de matching (source → destination)
allocation_results
Resultats du calcul ABC (montants alloues)
driver_values
Valeurs des drivers d'allocation
dimensions
Dimensions d'analyse et leurs membres
◉ Snapshots du modele
Les snapshots sauvegardent l'etat complet de la base de donnees SQLite a un instant donne. Ils persistent dans IndexedDB entre les sessions (contrairement a l'ancienne version en memoire uniquement).
Acces
Cliquez sur l'icone ◉ dans la barre superieure pour ouvrir le gestionnaire de snapshots.
Fonctionnalites
Action
Description
Creer
Saisissez un nom et cliquez sur « + Creer ». L'etat complet de la base de donnees est capture.
Restaurer
Cliquez sur ↺ pour remplacer le modele courant par le snapshot. Necessite une confirmation. La page se recharge.
Exporter
Cliquez sur ↓ pour telecharger le snapshot sous forme de fichier .sqlite (partageable ou utilisable comme sauvegarde).
Importer
Cliquez sur « Importer » pour charger un fichier .sqlite en tant que nouveau snapshot.
Supprimer
Cliquez sur ✕ pour supprimer definitivement un snapshot.
Bonnes pratiques
Creer un snapshot avant toute modification majeure du modele (restructuration de modules, imports en masse, reinitialisation des calculs)
Nommer les snapshots de maniere descriptive (ex. « Avant restructuration Q2 », « Post-import GL Mars »)
Exporter les snapshots importants sous forme de fichiers .sqlite pour une sauvegarde externe
Note technique
Les snapshots sont stockes dans une base IndexedDB separee (abc_snapshots). Ils survivent aux rechargements de page et aux redemarrages du navigateur, mais restent locaux a ce navigateur.
◆ Introduction a l'Activity-Based Costing (ABC)
Qu'est-ce que l'ABC ?
L'Activity-Based Costing (comptabilite par activites) est une methode de calcul des couts qui identifie les activites d'une organisation et affecte le cout de chaque activite aux produits et services en fonction de leur consommation reelle de ces activites.
Contrairement aux methodes traditionnelles qui repartissent les charges indirectes via des cles volumetriques simples (heures de main-d'oeuvre, chiffre d'affaires...), l'ABC cherche a etablir un lien causal entre les couts et les objets de cout.
Origine : L'ABC a ete developpe dans les annees 1980 par Robert Kaplan et Robin Cooper de la Harvard Business School, en reponse a l'inadequation croissante des systemes de couts traditionnels face a l'automatisation et la diversification des produits.
Pourquoi l'ABC ?
Precision : Meilleure comprehension du cout reel de chaque produit, service ou client
Visibilite : Identification des activites consommatrices de ressources
Decision : Base fiable pour la tarification, le make-or-buy, l'optimisation
Transparence : Lien tracable entre depenses comptables et objets de cout finaux
Optimisation : Detection des activites a faible valeur ajoutee
Quand utiliser l'ABC ?
Les charges indirectes representent une part significative des couts totaux (> 30%)
Le mix produits/services est diversifie
Les processus sont complexes avec de nombreuses activites transversales
Les decisions de pricing sont critiques pour la rentabilite
Les methodes traditionnelles donnent des resultats contre-intuitifs
■ Concepts fondamentaux de l'ABC
Les 5 piliers de l'ABC
Concept
Definition
Exemple
Ressource
Element de cout tel qu'enregistre dans la comptabilite (compte du GL). C'est le point d'entree du modele.
Unite de travail realisee par l'organisation. Les activites consomment des ressources.
Traiter une commande, maintenir un serveur, former un collaborateur
Inducteur (Driver)
Mesure quantitative qui explique le lien causal entre un fournisseur de cout et un consommateur.
Nombre de commandes, heures-machine, nombre de tickets traites, m2 occupes
Objet de cout
Entite finale dont on veut connaitre le cout complet (produit, service, client, projet).
Produit A, Client X, Projet Y, Ligne de service Z
Allocation
Repartition du cout d'un element vers un ou plusieurs destinataires, proportionnellement a un inducteur.
80% des couts RH vers "Support client", 20% vers "Developpement"
La chaine de valeur ABC
Ressources Comptes du GL
→
Activites Processus metier
→
Prestations Services rendus
→
Objets de cout Produits / Clients
Chaque fleche represente une allocation pilotee par un inducteur. L'ABC suit les couts a travers plusieurs niveaux (modules) jusqu'aux objets de cout finaux.
Modules dans un modele ABC
Un modele ABC s'organise en modules qui representent les differents niveaux d'analyse. Chaque module contient des membres (elements individuels). Les modules typiques sont :
Module
Role
Exemples de membres
Nature (Charges)
Point d'entree : les comptes comptables du Grand Livre
Le nombre et la denomination des modules sont entierement configurables dans l'outil. Un modele peut avoir 3 modules (simple) ou 7+ modules (complexe). L'important est de respecter un flux logique des ressources vers les objets de cout.
Dimensions
Chaque module peut avoir plusieurs dimensions qui permettent de categoriser les membres selon differents axes d'analyse. Par exemple, le module "Ressource" pourrait avoir les dimensions :
Code : identifiant unique (RES_001)
Libelle : nom descriptif (Equipe Support Niveau 1)
Direction : rattachement organisationnel (DSI)
Site : localisation (Paris, Lyon)
Les dimensions supplementaires enrichissent l'analyse dans les tableaux croises (TCD) et les rapports.
⇄ ABC vs. Comptabilite analytique traditionnelle
Methode traditionnelle (centres de couts)
Repartition sur des cles volumetriques (CA, effectifs, m2)
Les charges indirectes sont "saupoudrees" uniformement
Pas de lien causal entre couts et consommation
Subvention croisee entre produits (les petites series subventionnent les grandes)
Visibilite limitee sur les processus
Methode ABC
Repartition sur des inducteurs causaux (nb commandes, nb tickets, heures)
Les charges sont tracees via les activites consommatrices
Lien direct entre cout et consommation reelle
Cout reel de chaque produit/service/client
Visibilite complete sur la chaine de valeur
Exemple concret
Prenons une entreprise avec 2 produits : Produit A (gros volumes, simple) et Produit B (petits volumes, complexe).
Methode
Produit A (10 000 unites)
Produit B (500 unites)
Traditionnelle (CA au prorata)
95% des charges indirectes
5% des charges indirectes
ABC (nb commandes, nb references, controles qualite)
60% des charges indirectes
40% des charges indirectes
Dans cet exemple, la methode traditionnelle sous-estime le cout du Produit B de 35 points. Le Produit B, bien que faible en volume, genere beaucoup de complexite (commandes specifiques, controles qualite, logistique dediee). L'ABC revele cette realite.
Hierarchie des inducteurs (Cooper & Kaplan)
Niveau
Type d'inducteur
Exemples
Unite
Proportionnel au volume produit
Heures-machine, matieres premieres par unite
Lot (batch)
Lie au nombre de lots traites
Nombre de commandes, nombre de lancements de production
Produit
Lie a l'existence du produit
Nombre de references, nombre de gammes
Entite
Lie a la structure organisationnelle
Nombre de sites, nombre de divisions
⚙ Methodologie pas a pas : construire un modele ABC
La construction d'un modele ABC suit un processus structure en 8 phases. Chaque phase est essentielle et doit etre validee avant de passer a la suivante.
1
Cadrage et objectifs
Definir le perimetre du modele : quels couts inclure ? Quels objets de cout cibler ? Quelle granularite ? Cette phase est cruciale pour eviter un modele trop complexe ou trop simpliste.
Identifier les parties prenantes (finance, operationnel, direction)
Definir les questions auxquelles le modele doit repondre
Fixer le perimetre : couts directs, indirects, complets ?
Choisir la granularite temporelle (mois, trimestre, annee)
Estimer le nombre de modules et la profondeur d'analyse
2
Cartographie des processus
Identifier et documenter les processus metier de l'organisation. C'est le fondement du modele ABC : les activites decoulent des processus.
Realiser des interviews avec les operationnels
Dessiner les diagrammes de flux (BPMN)
Identifier les activites principales et de support
Rattacher chaque activite a une direction/service
Valider la cartographie avec les metiers
3
Construction du modele de donnees
Definir la structure du modele : les modules, leurs dimensions, et les membres de chaque module.
Creer les modules (Nature, Ressource, Activite, Prestation, Metier/Client...)
Definir les dimensions de chaque module (Code, Libelle, Direction, Site...)
Creer les membres : chaque compte comptable, chaque ressource, chaque activite...
Valider la coherence : chaque membre du module N doit pouvoir etre alloue au module N+1
4
Import des donnees comptables (Grand Livre)
Charger les donnees financieres qui alimenteront le modele. Le GL constitue la "source de verite" des couts.
Extraire le Grand Livre de la comptabilite
Mapper les comptes aux membres du module d'entree
Verifier la reconciliation : total GL = total modele
Gerer les multi-fichiers si necessaire (charges DSI, charges immo, amortissements...)
Identifier les comptes non mappes (orphelins)
5
Definition des regles d'allocation (Matching)
Etablir les liens entre modules : quel membre du module source alloue vers quel(s) membre(s) du module cible ?
Pour chaque paire de modules consecutifs, definir la matrice de correspondance
Un membre source peut allouer vers plusieurs cibles (1:N)
Utiliser la matrice de matching pour visualiser les liens
Verifier que chaque membre avec un cout a au moins une allocation sortante
Identifier les couts orphelins (pas d'allocation = couts perdus)
6
Choix et parametrage des inducteurs (Drivers)
Pour chaque allocation, choisir l'inducteur qui reflete le mieux la causalite entre le fournisseur et le consommateur.
Choisir le type de driver : egal, proportionnel, fixe, basé sur les valeurs, formule, volume, % manuel, table de reference
Collecter les donnees de drivers (enquetes, systemes d'information, mesures terrain)
Saisir les valeurs de drivers pour chaque couple source/cible
Privilegier les inducteurs causaux aux inducteurs de commodite
Valider avec les operationnels que les inducteurs refletent la realite
7
Execution du calcul ABC
Lancer le moteur de calcul qui va propager les couts du module d'entree vers les objets de cout finaux, en suivant les allocations et inducteurs.
Verifier les prerequis : GL charge, allocations definies, drivers parametres
Lancer le calcul (sequentiel, module par module)
Verifier la conservation : le total en sortie doit etre egal au total en entree
Analyser les avertissements (membres sans allocation, drivers manquants)
8
Analyse et restitution des resultats
Exploiter les resultats du calcul pour repondre aux questions initiales et piloter les decisions.
Visualiser les flux via le diagramme Sankey
Construire des tableaux croises dynamiques (TCD) multi-dimensions
Comparer Budget vs. Reel (phases B et R)
Identifier les activites et objets de cout les plus couteux
Simuler des scenarios what-if (impact de changements de volumes ou de structure)
Presenter les resultats aux parties prenantes
Approche iterative : Un modele ABC n'est jamais parfait du premier coup. Commencez simple (80/20 : 20% des inducteurs expliquent 80% des couts), puis affinez progressivement. Mieux vaut un modele simple et juste qu'un modele complexe et faux.
☍ Inducteurs et cles de repartition
Qu'est-ce qu'un inducteur ?
Un inducteur de cout (cost driver) est la variable qui explique pourquoi un objet de cout consomme une ressource ou une activite. C'est le facteur causal de la repartition.
Criteres de choix d'un bon inducteur
Critere
Description
Causalite
L'inducteur doit refleter un lien reel entre le cout et sa consommation
Mesurabilite
Les donnees doivent etre disponibles et fiables
Proportionnalite
Quand l'inducteur augmente, le cout augmente proportionnellement
Cout de collecte
Le cout de mesure de l'inducteur doit etre raisonnable
Comprehension
Les operationnels doivent comprendre et valider l'inducteur
Types d'inducteurs dans l'outil
Type
Comportement
Cas d'usage
Egalitaire
Repartition egale entre toutes les cibles
Frais generaux partages equitablement, couts de structure
Proportionnel
Au prorata des couts deja recus par les cibles
Frais de gestion proportionnels au poids financier
Fixe
Montant fixe par cible (le reste au prorata)
Redevance fixe par entite, cout de licence par utilisateur
Base sur valeurs
Au prorata des valeurs saisies (ex: nb tickets, heures)
Repartition par nombre de commandes, m2 occupes, FTE
Base sur des volumes de production ou de transaction
Unites produites, transactions traitees
% Manuel
Pourcentages saisis manuellement par l'utilisateur
Enquetes temps, estimations managementales
Table de reference
Valeurs provenant d'une table externe
Grilles tarifaires, baremes contractuels
Bonne pratique : Commencez par les inducteurs les plus simples (egalitaire, proportionnel) pour les couts de faible materialite. Reservez les inducteurs complexes (formule, valeurs) pour les postes de cout les plus significatifs ou les processus necessitant le plus de precision.
Collecte des donnees d'inducteurs
La collecte des donnees d'inducteurs est souvent la phase la plus longue d'un projet ABC. Les sources typiques sont :
Enquetes terrain : estimation du temps passe par activite par les managers
Mesures physiques : m2, kWh, nombre de postes de travail
Donnees RH : effectifs (FTE), masse salariale par equipe
Donnees contractuelles : nombre de licences, volumes contrats
▶ Mode operatoire : construire un modele ABC avec cet outil
Ce guide pas-a-pas vous accompagne dans la construction d'un modele ABC complet en utilisant toutes les fonctionnalites de l'outil.
Etape 1 : Creer le projet et choisir un template
1
Page Accueil > Outils de construction > Templates
Choisissez un template adapte a votre secteur (Services, Industrie, Banque, IT) ou partez de zero. Le template pre-cree les modules, dimensions et quelques membres exemples.
Alternativement, allez dans Modele > Modules et creez vos modules un par un. Definissez au minimum : un module d'entree (les comptes comptables) et un module de sortie (les objets de cout).
Etape 2 : Definir les modules et dimensions
2
Page Modele > Onglet Modules
Pour chaque module, definissez ses dimensions (colonnes d'information). Au minimum : une dimension "Code" (identifiant unique) et une dimension "Libelle" (nom lisible). Ajoutez des dimensions supplementaires si necessaire pour l'analyse (Direction, Site, Categorie...).
Ordonnez les modules du plus "amont" (charges comptables) au plus "aval" (objets de cout). L'ordre determine le sens du flux d'allocation.
Etape 3 : Creer les membres
3
Page Modele > Onglet Membres (par module)
Creez les membres de chaque module. Pour le module d'entree, les membres correspondent aux comptes du Grand Livre. Pour les modules intermediaires, utilisez les activites identifiees lors de la cartographie des processus.
Import XLSX : importez les membres en masse via un fichier Excel
Auto-suggestion GL : l'outil detecte les comptes du GL non encore crees comme membres et propose leur creation automatique
Depuis le BPMN : generez automatiquement des membres Activite a partir des taches du diagramme BPMN
Etape 4 : Importer le Grand Livre
4
Page Import GL
Importez votre Grand Livre au format XLSX ou CSV. L'outil s'attend a des colonnes mappables : code compte, libelle, montant, et eventuellement phase (R/B) et mois.
Verifiez le mapping des colonnes dans le dialogue d'import
Apres l'import, verifiez la reconciliation (Verification > Reconciliation GL)
Identifiez les comptes orphelins (present dans le GL mais pas dans le modele)
Utilisez Auto-suggestion pour creer automatiquement les membres manquants
Etape 5 : Definir le matching (correspondances)
5
Page Matching (Matrice de correspondance)
Pour chaque paire de modules consecutifs, definissez quels membres source allouent vers quels membres cible. La matrice vous permet de cocher les intersections.
Cliquez sur une cellule pour creer/supprimer un lien
Utilisez les filtres pour travailler par direction ou categorie
L'outil cree automatiquement les allocations correspondantes
Le diagnostic vous alerte si des membres n'ont aucun lien
Etape 6 : Configurer les inducteurs
6
Page Allocations > Onglet Drivers
Pour chaque allocation, choisissez un inducteur et parametrez-le.
Creez les drivers dans l'onglet Drivers
Associez chaque driver aux allocations via le menu deroulant
Saisissez les valeurs de drivers dans la matrice
Import XLSX : importez les valeurs de drivers en masse
Verifiez que chaque allocation avec un driver "base sur valeurs" a bien des valeurs saisies
Etape 7 : Lancer le calcul
7
Page Calcul
Avant de lancer le calcul, executez le Diagnostic (bouton en haut de page) pour verifier la coherence du modele.
Corrigez les erreurs signalees (couts orphelins, drivers manquants...)
Lancez le calcul : le moteur propage les couts module par module
Verifiez la conservation : le total en sortie = total en entree
Consultez le rapport de calcul pour les avertissements
Etape 8 : Analyser les resultats
8
Pages Sankey, TCD, Verification
Exploitez les resultats via les differentes vues d'analyse :
Sankey : visualisez les flux de couts entre modules sous forme de diagramme de flux
TCD : construisez des tableaux croises dynamiques en glissant les dimensions
Verification : controles de conservation, ecarts, reconciliation
Net Allocation : vue detaillee des allocations nettes par membre
What-If : simulez des variations (que se passe-t-il si le volume double ?)
Rapport d'audit XLSX : exportez un rapport complet du modele
Correspondance Methodologie ↔ Outil
Phase methodologique
Fonctionnalite outil
Page
Cadrage et objectifs
Templates de modele, parametres projet
Accueil, Parametres
Cartographie des processus
Editeur BPMN, diagrammes de flux
BPMN
Construction du modele
Modules, dimensions, membres
Modele
Import donnees comptables
Import GL (XLSX/CSV), multi-fichiers
Import GL
Regles d'allocation
Matrice de matching, allocations
Matching, Allocations
Inducteurs
Drivers (8 types), valeurs, formules
Allocations > Drivers
Calcul ABC
Moteur sequentiel multi-periodes
Calcul
Analyse et restitution
Sankey, TCD, What-If, Rapport audit
Sankey, TCD, Verification
Astuce : Utilisez le Tableau de bord de progression (page Accueil) pour suivre l'avancement de la construction de votre modele. Il indique en temps reel les etapes completees et celles restantes.
Appliquer la regle 80/20. 30-50 activites couvrent generalement 80% des couts
2
Inducteurs de commodite
Meme resultat que la methode traditionnelle, pas de valeur ajoutee
Privilegier les inducteurs causaux. Si le CA est le seul inducteur, l'ABC n'apporte rien
3
Couts orphelins
Des charges restent non allouees, le total en sortie est inferieur au total en entree
Utiliser le diagnostic pour detecter les membres sans allocation
4
Non-reconciliation GL
Le modele ne s'appuie pas sur les bons montants, perte de credibilite
Toujours verifier que total GL = total module d'entree avant de calculer
5
Pas de validation metier
Le modele ne reflete pas la realite operationnelle
Faire valider chaque etape par les operationnels concernes
6
Driver unique pour tout
Revient a une methode en sections homogenes, pas d'ABC
Varier les inducteurs selon la nature de l'activite
7
Pas de snapshots
Impossible de revenir en arriere apres une modification erronee
Creer un snapshot avant chaque modification majeure du modele
8
Dimensions insuffisantes
Analyse limitee dans les TCD, pas d'axe de restitution pertinent
Ajouter les dimensions d'analyse des le depart (Direction, Site, Categorie...)
9
Allocations circulaires
Le calcul echoue ou produit des resultats incoherents
Respecter le flux unidirectionnel module N vers module N+1
10
Pas de documentation
Le modele est incomprehensible pour les autres, non maintenable
Utiliser les notes, les tags organisationnels, et le rapport d'audit
Bonnes pratiques
Commencer simple
Un premier modele avec 3-4 modules et des inducteurs simples est preferable a un modele complexe jamais termine. Vous pourrez toujours affiner ensuite.
Documenter les choix
Pour chaque inducteur choisi, notez pourquoi il a ete retenu. Utilisez les champs notes de l'outil et les tags organisationnels pour structurer.
Valider incrementalement
Calculez et verifiez apres chaque etape majeure (apres le GL, apres le matching, apres les drivers). Ne lancez pas le premier calcul a la fin.
Utiliser le BPMN
La cartographie BPMN est le meilleur moyen d'identifier les activites. L'outil permet de generer automatiquement des membres depuis le BPMN.
Comparer Budget vs. Reel
Chargez les deux phases (B et R) pour comparer les ecarts. Le TCD permet de croiser les dimensions avec la phase pour une analyse complete.
Sauvegarder regulierement
Utilisez les snapshots avant les modifications majeures. Exportez regulierement la base de donnees pour une sauvegarde externe.
☰ Glossaire ABC
Terme
Definition
ABC
Activity-Based Costing : methode d'allocation des couts basee sur les activites consommatrices de ressources
ABM
Activity-Based Management : utilisation des resultats ABC pour piloter la performance (optimisation, pricing, make-or-buy)
Activite
Unite de travail identifiable et mesurable, consommatrice de ressources et produisant un resultat
Allocation
Operation de repartition d'un cout d'un element source vers un ou plusieurs elements cibles
Charge directe
Cout directement imputable a un objet de cout sans clef de repartition (ex: matiere premiere d'un produit)
Charge indirecte
Cout ne pouvant etre attribue directement et necessitant une cle de repartition (ex: loyer du siege)
Conservation
Principe fondamental : le total des couts en sortie du modele doit etre egal au total en entree (a l'euro pres)
Cost pool
Regroupement de couts partageant le meme inducteur d'allocation
Dimension
Axe d'analyse d'un module (Code, Libelle, Direction, Site...) permettant le decoupage dans les restitutions
Driver (Inducteur)
Variable quantitative mesurant la relation causale entre un fournisseur et un consommateur de cout
FTE
Full-Time Equivalent : equivalent temps plein, souvent utilise comme inducteur pour les couts RH
Grand Livre (GL)
Journal comptable contenant toutes les ecritures. Source de donnees primaire du modele ABC
Matching
Matrice de correspondance definissant les liens d'allocation entre les membres de deux modules consecutifs
Membre
Element individuel d'un module (un compte comptable, une ressource, une activite, un produit)
Module
Niveau d'analyse du modele ABC contenant un ensemble de membres de meme nature
Objet de cout
Entite finale dont on calcule le cout complet (produit, service, client, projet, ligne metier)
Orphelin
Membre ayant un cout saisi mais aucune allocation sortante : le cout ne sera pas propage
Phase
Distinction Budget (B) vs. Reel (R) permettant la comparaison dans un meme modele
Reconciliation
Verification que le total des couts importes dans le modele correspond au total du Grand Livre source
Ressource
Moyen mis en oeuvre par l'organisation (personnes, equipements, locaux) consommant des charges comptables
Sankey
Diagramme de flux visualisant la propagation des couts entre modules, avec largeur proportionnelle aux montants
Snapshot
Sauvegarde instantanee de l'etat complet du modele dans IndexedDB, permettant de revenir a un etat anterieur. Persiste entre les sessions.
TCD
Tableau Croise Dynamique : outil d'analyse multidimensionnelle des resultats du calcul ABC
TDABC
Time-Driven ABC : variante simplifiee de l'ABC utilisant le temps comme inducteur principal
What-If
Simulation de scenarios : modifier des parametres (volumes, poids) et observer l'impact sur les couts