ABC Costing

Recherche
Eclatement
Affichage
50%
Flux
Navigation
Zoom
Filtres
Export

Détail

← Flux Amont (Sources)

Flux Aval (Destinations) →

Trace complète du flux

Diagramme
Info
Aucun diagramme
💾 Enregistrer sous...
📂 Ouvrir un diagramme...
📋 Dupliquer
📷 PNG
📄 SVG
📖 PDF
Fichier
Forme
A
Police
Rotation
Ordre
Actions
Style connexion
Actions
Couloirs
Disposition
Calques
Aucune UO
Unites Org.
Recherche
100%
Zoom
Grille

Flux

Debut
Fin
Tache
× XOR
+ AND
Couloir

ABC

Centre cout
KPI / Driver
Document
Note

Sources

Excel
BDD

Formes

Fleche
Bi-fleche
Chevron
Hexagone
Etoile
Bulle
Cylindre
Trapeze

Proprietes

Modules
Types d'objets
Actions

Sélectionnez un module
Choisissez un module dans la liste pour voir et modifier ses propriétés, membres et dimensions.
Membres
Vue
Actions

Sélectionnez un membre

Sélectionnez un module puis un membre pour voir ses propriétés.

Dimensions
Axes d'analyse
Actions

Selectionnez une dimension

Associations Dim. ↔ Membres
Liaison
Actions

Sélectionnez un module pour voir et éditer les associations dimensions/membres.

Inducteurs (Drivers)

La gestion complete des inducteurs (configuration, valeurs, matrice, import/export) est disponible dans la page dediee.

Attributs
Qualifications
Actions

Sélectionnez un attribut

Les attributs permettent de qualifier les membres (direct/indirect, variable/fixe, etc.).

Matching
Matrice
Navigation
Allocations
Regles
Actions
Inducteurs (Drivers)
Gestion
Actions

Inducteurs 0

Selectionnez un inducteur
Cliquez sur un inducteur dans la liste pour voir et modifier sa configuration.
Import Grand Livre (GL)
Donnees
Outils
Ajouter = cumule avec l'existant  |  Remplacer = meme nom  |  Annule et remplace = efface tout

Glissez un ou plusieurs fichiers CSV ici ou cliquez pour selectionner

COMPTE, LIBELLE, MONTANT, DATE, CODE RESSOURCE, LIBELLE RESSOURCE, PHASE (R/BYYYY), MOIS

▢ Apercu des donnees GL
▢ Ecritures GL chargees
Compte Libelle Montant Date Code Ress. Lib. Ress. Phase Mois Source Nature liee
TOTAL
Import des couts saisis
Donnees
Moteur de Calcul ABC
Calcul
Actions
Pret a calculer
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)

KPIDescription
ModulesNombre de modules definis dans le modele
MembresNombre total de membres (toutes dimensions confondues)
AllocationsNombre de regles d'allocation configurees
GLNombre d'ecritures du Grand Livre importees
InducteursNombre de drivers definis
PeriodesNombre 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 :

StatutIconeCouleurSignificationImpact 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 :

ActionCascadeDirection
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 ?

PageComment
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)
  • Fichier 2 : charges immobilieres (loyers, charges locatives)
  • Fichier 3 : amortissements DSI
  • Fichier 4 : frais generaux

3 modes d'import

ModeComportementQuand l'utiliser
Ajouter (cumuler)Ajoute les ecritures au GL existant. Chaque fichier cree un lot trace separement.Import par paquets : salaires.csv + loyers.csv + amort.csv
Remplacer ce fichierSupprime 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 GLEfface 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

ColonneObligatoireDescriptionExemple
COMPTEOuiCode du compte comptable641100
LIBELLE COMPTENonLibelle du compteSalaires cadres
MONTANTOuiMontant en euros125000
DATENonDate de l'ecriture15/01/2024
CODE RESSOURCENonCode de la ressource/centreRES_DG
LIBELLE RESSOURCENonLibelle de la ressourceDirection Generale
PHASENonScenario + annee. R = Reel, B = BudgetR2024 ou B2025
MOISNonMois (01-12). Si vide, montant reparti sur 12 mois01, 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

  1. Selectionner le module cible dans la liste deroulante
  2. Charger le fichier (CSV ou XLSX) par glisser-deposer ou via le bouton de selection
  3. L'outil auto-detecte le separateur (virgule, point-virgule, tabulation) et identifie les colonnes
  4. Un apercu du fichier s'affiche pour verification avant validation
  5. Confirmer l'import pour inserer les couts dans le modele

Format attendu

Le fichier doit contenir au minimum deux colonnes :

ColonneDescription
DIM_KEY ou LABELIdentifiant ou libelle du membre cible
MONTANTValeur 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 :

TypeNomLogique de calculChamp utiliseCas 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) Calcul sur-mesure, regles metier complexes
6 Taux / Taxe montant = taux × Σ couts(base selectionnee) formula_base (selection de la base) + taux Taxe formation, taxe apprentissage, cotisations patronales, TVA sectorielle
7 Composite (produit) poids = driverA × driverB (normalise) depends_on : liste des drivers a multiplier Croisement ETP × m², intensite × volume, complexite × duree

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
VariableDescription
SRC_TOTALCout total de la source (entered + calculated)
WEIGHTPoids de l'allocation (driver_weight, en %)
QTYQuantite de l'allocation (driver_quantity)
NNombre total de destinations depuis cette source
SRC_ID / DST_IDIdentifiants numeriques source et destination
Fonctions Excel standard
FonctionSyntaxeDescription
IFIF(cond; vrai; faux)Condition
ROUNDROUND(val; decimales)Arrondi
ABSABS(val)Valeur absolue
MIN / MAXMIN(a; b; ...)Minimum / Maximum
SUMSUM(a; b; ...)Somme des arguments
AVERAGEAVERAGE(a; b; ...)Moyenne
IFERRORIFERROR(expr; fallback)Remplace les erreurs
SWITCHSWITCH(expr; val1; res1; ...)Multi-cas
AND / OR / NOTAND(c1; c2)Logique booleenne
FLOOR / CEILINGFLOOR(val; pas)Arrondi inf./sup.
MODMOD(a; b)Modulo
POWERPOWER(base; exp)Puissance
Fonctions ABC (acces aux donnees du modele)
FonctionDescriptionExemple
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
  • =MIN(QTY * 500; SRC_TOTAL / N) — forfait par quantite plafonne
  • =COST("NAT_SALAIRES") * 1.68% — taxe formation = 1.68% des salaires
  • =COST_TREE("GRP_PERSONNEL") * 1.68% — taxe sur tout le groupe Personnel (salaires + charges + primes...)
  • =SUM_MODULE("NATURE") - SUM_MEMBERS("GRP_TAXES"; "GRP_PROVISIONS") — total natures hors taxes et provisions
  • =IF(N > 5; SRC_TOTAL / N; SRC_TOTAL * WEIGHT / 100) — repartition conditionnelle
  • =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 :

  1. Calcul de la base : le moteur selectionne un ensemble de membres selon la configuration et somme leurs couts (entered + calculated deja presents)
  2. Application du taux : montant = base × taux, puis repartition sur les destinations selon les poids habituels

4 modes de selection de la base :

ModeDescriptionExemple
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 Dimension "Groupe Nature" = SAL_BASE, SAL_PRIMES → somme des natures salariales
Par hierarchie 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 :

poids(src, dst) = driverA(src, dst) × driverB(src, dst) × ...

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 :

PrioriteDescriptionUsage
0Normal (defaut)Allocations classiques (salaires, charges directes, loyer, etc.)
1Apres les normauxTaxes sur salaires, cotisations (base = resultat des allocations priorite 0)
2En dernierTaxes 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 :

ZoneContenu
Panneau gaucheListe des inducteurs avec filtres (recherche, utilisation, unite, type), badge compteur, boutons dupliquer/modifier/supprimer
Section configurationParametres du driver selectionne : type, priorite, unite, sequence, description, formule equivalente, bouton Convertir
Matrice de valeursGrille 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
FonctionRaccourci / ActionDescription
SelectionClic sur celluleSelectionne une cellule. La barre d'outils affiche "Source → Destination" et la valeur.
Selection multipleShift+Clic, glisserSelectionne une plage rectangulaire de cellules
NavigationFleches, Tab, Shift+TabSe deplacer dans la grille (Tab = droite, Enter = bas)
EditionDouble-clic, F2, ou taper directementOuvre l'editeur dans la cellule. Taper un chiffre demarre l'edition.
ValiderEnter, TabValide la saisie et deplace la selection
AnnulerEchapAnnule l'edition en cours
SupprimerSuppr, BackspaceEfface le contenu des cellules selectionnees
CopierCtrl+CCopie la selection en format TSV (collable dans Excel)
CollerCtrl+VColle 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 :

ModeRendu
NormalAucune mise en forme — affichage standard
■ Nuances vertHeatmap : les cellules sont colorees du blanc (min) au vert (max)
▮ Barres donneesBarres 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 : vide non 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

ModeComportementCas 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

TypeColonne valeurStockageOption allocations
0 - PonderationPoidsdriver_values + driver_weight sur allocations☑ Creer/mettre a jour les allocations
1 - VolumeQuantitedriver_values (matrice)
2 - ForfaitaireMontantdriver_values + driver_quantity sur allocations☑ Creer/mettre a jour les allocations
3 - ProrataPas d'import — valeurs calculees automatiquement
4 - EgalitairePas d'import — repartition uniforme
5 - FormuleValeurdriver_values (matrice optionnelle)
6 - TauxValeurdriver_values (matrice optionnelle)
7 - CompositeValeurdriver_values (matrice optionnelle)

Formats supportes

FormatImportExportDetails
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).

Colonnes : Source ; Destination ; Valeur (3 colonnes minimum)

  • 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 :

OngletContenuAction 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 :

  1. Choisir le module dans le sous-filtre (NATURE, RESSOURCE, etc.)
  2. Naviguer dans l'arbre : les groupes racine (N2) sont affiches avec leurs enfants repliables. Les badges N2 N1 N0 indiquent le niveau hierarchique
  3. Filtrer par niveau : le selecteur « Tous niveaux / N2 Racines / N1 Intermediaires / N0 Detail » restreint l'affichage
  4. Cocher les elements a inclure (cases a cocher). Le compteur de descendants en gris indique combien d'elements detail (N0) sont sous chaque groupe
  5. Choisir le mode d'insertion dans la barre de selection :
BoutonFormule genereeCas 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)
Module - selection =SUM_MODULE("NATURE") - SUM_MEMBERS("GRP_TAXES"; "GRP_PROV") 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 :

CategorieExemplesDescription
Repartition par poids=WEIGHT, =SRC_TOTAL * WEIGHT / 100Cles de repartition manuelles classiques
Repartition par volume=QTY, =QTY * WEIGHTVolumes (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 :

  1. Lit la configuration actuelle du driver (type, taux, module, dimension, depends_on...)
  2. Construit automatiquement la formule equivalente la plus precise possible
  3. 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
  • Operateurs : + - * / ^ (puissance) > < >= <= = (egalite) <> (different)
  • 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

ValeurSignification
PositifFlux net sortant de la source vers la destination
NegatifFlux net inverse (la destination restitue davantage qu'elle ne recoit)
Zero / videAucun 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)

ZonePositionContenu
PaletteGaucheObjets a glisser-deposer sur le canvas (12 types d'elements)
RubanEn hautStyle contextuel (couleur, bordure, opacite, trait des fleches). Change selon la selection.
CanvasCentreZone de dessin SVG avec grille pointillee, zoom/pan molette
ProprietesDroiteParametres metier : nom, module lie, membre, allocation, driver, sous-processus
MinimapBas-droiteVue d'ensemble miniature du diagramme avec rectangle viewport
LegendeBas-gaucheModules ABC utilises dans le diagramme avec leurs couleurs

Elements disponibles (palette)

CategorieElementFormeUsage ABC
FLUX● DebutCercle vert + playPoint d'entree du process
◉ FinCercle rouge + stopPoint de sortie
▢ TacheRectangle arrondiActivite/prestation → liee a un membre module
◊ XORLosange ambreDecision exclusive (ou/ou)
✚ ANDLosange indigoParallelisme (et/et)
☰ CouloirRectangle large avec headerContient des taches. Represente un service/direction
ABC€ Centre coutHexagone tealCentre de cout / poste de charge
◎ KPI / DriverRectangle violet arrondiInducteur d'allocation visualise
☰ DocumentFeuille avec vagueDocument de reference
✎ NotePost-it jauneAnnotation libre pour la seance
Sources▦ ExcelRectangle vert + grilleSource de donnees Excel
☌ BDDCylindre bleuSource base de donnees

Raccourcis clavier

RaccourciAction
Ctrl+ZAnnuler (undo) — jusqu'a 40 actions
Ctrl+Y / Ctrl+Shift+ZRetablir (redo)
Ctrl+CCopier les elements selectionnes (+ connexions internes)
Ctrl+VColler avec decalage de 30px
Ctrl+ATout selectionner
Ctrl+ClicMulti-selection (ajouter/retirer un element)
Delete / BackspaceSupprimer les elements selectionnes
Shift+ClicCreer connexion (source → cible)
EscapeDeselectionner tout, annuler connexion en cours
Double-clic sur elementEditer le nom inline, naviguer dans sous-processus, ou entrer en mode dossier (swimlane)
Double-clic sur label flecheEditer le texte du flux inline
MoletteZoom avant/arriere
Clic+drag sur fondPan (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)

ParametreOptions
CouleurPalette de 16 couleurs + couleur personnalisee
EpaisseurFin (1px), Normal (2px), Epais (3px), Tres epais (5px)
Style traitContinu, Tirets, Points, Mixte, Long, Tiret-points
RoutageCourbe (Bezier perpendiculaire) ou Angles droits (orthogonal)
Forme departAucun, Fleche, Chevron, Losange, Cercle
Forme arriveeIdem (defaut : fleche pleine)
Fond du labelCouleur de fond de la pastille de texte sur la fleche
AffichageTexte + Inducteur, Texte seul, Inducteur seul, Rien
InverserBouton ↔ pour inverser source et destination

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 :

ActionResultat
Double-clic sur un swimlaneEntre en mode dossier : seuls les elements contenus dans ce couloir sont affiches
Bouton dans le header du couloirIdem (alternative au double-clic)
Clic droit > Entrer dans le couloirIdem (menu contextuel)
Bouton ↑ Remonter dans le rubanRemonte d'un niveau dans la pile de focus
Bouton × Quitter dans le rubanSort 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 :

CalqueDescription
Calques de statutBrouillon / Propose / Valide — filtre les connexions par statut d'allocation. Decocher un calque masque les connexions de ce statut.
Unites organisationnellesChaque 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)

NiveauDescriptionNavigation
MasterVue d'ensemble de tous les diagrammesBouton "Vue Master" dans la toolbar
DiagrammeUn processus complet avec ses taches et fluxDouble-clic sur un bloc Master, ou selection dans le dropdown
Sous-processusDetail d'une tache complexeDouble-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 :

  1. Chargement GL : les ecritures du grand livre alimentent les natures de charges
  2. Allocations sequentielles : chaque etape redistribue les montants selon les regles et les drivers configures
  3. Analyse des flux : construction des contributions nettes (BFS upstream/downstream) et du cube PNL multi-dimensions
  4. 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

TestDescription
Conservation des coutsVerifie que le total des couts en entree egale le total en sortie (pas de perte ni de creation de valeur)
Allocations orphelinesDetecte les regles d'allocation qui referencent des membres inexistants ou supprimes
Membres sans coutIdentifie 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 :

  1. Teste chaque niveau hierarchique (racine, intermediaire, detail) des membres du module
  2. Teste chaque dimension associee au module (Client, Canal, Direction...)
  3. Choisit le niveau qui donne le meilleur nombre de noeuds dans le range cible
  4. 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 :

ControleDescription
Selecteur dimensionChoisir la dimension d'eclatement (ou "Membres" pour la hierarchie du module)
Groupes / Niv.2 / Detail3 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

ParametreDescriptionDefaut
Range auto-splitNombre min et max de noeuds par module pour le calcul automatique2 a 15
Eclatement par moduleConfiguration manuelle : dimension + niveau pour chaque moduleAuto-calcule
Top NN'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 / LabelsAfficher ou masquer les montants et labels sur le diagrammeActives

Interactions

ActionResultat
Clic sur un noeudAffiche le detail (flux amont, aval, trace complete)
Shift+Clic sur un moduleOuvre les Allocations nettes pour ce module
Molette / pinchZoom in/out
Drag sur le fondDeplacer le diagramme (pan)
RechercheSurbrillance 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 :

ZoneRoleDescription
▤ LignesAxe verticalChamps affiches en lignes du tableau. Supporte la hierarchie et le multi-champs.
▥ ColonnesAxe horizontalChamps affiches en colonnes. Bouton ⇄ pour inverser lignes/colonnes.
∑ MesuresValeurs afficheesChoix des mesures a afficher dans chaque cellule (couts et/ou inducteurs).
⊞ FiltresFiltrage des donneesFiltres dynamiques multi-criteres sur n'importe quel champ.

Types de champs

6 types de champs peuvent etre utilises en lignes, colonnes ou filtres :

IconeTypeDescriptionExemple
DimensionAxes d'analyse du modele (hierarchiques)Canal, Client, Produit, Direction
ModuleType de module ABCNature, Ressource, Activite, Prestation
AttributAttributs des membres du modeleRegion, Variable/Fixe, Priorite
InducteurDrivers de repartition utilisesSurface (m2), ETP, Nb tickets
PeriodePeriodes temporellesJanvier 2024, Fevrier 2024
PhaseScenarios budgetairesReel 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 :

  1. Cliquez sur "+ Ajouter un filtre"
  2. Choisissez le type de champ (Module, Periode, Phase, Dimension, Attribut, Inducteur)
  3. 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

OptionDescription
MontantsValeurs absolues en euros (mode par defaut)
% de la ligneChaque cellule en pourcentage du total de sa ligne
% de la colonneChaque cellule en pourcentage du total de sa colonne
% du totalChaque cellule en pourcentage du total general
HierarchieAffiche la structure parent/enfant des dimensions avec deplier/plier
🌡 ChaleurMise 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 celluleSignification

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.
Diagonale : intra-module (self-allocations). Ex: RESSOURCE → RESSOURCE.
+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

CelluleSignification
Coche verte + point vert : allocation avec driver assigne. Prete pour le calcul.
Coche orange : allocation draft, sans driver. A completer (Ctrl+Clic + "Assigner driver").
75Chiffre 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 :

  1. Selectionner une ou plusieurs cellules (clic, Ctrl+Clic, Shift+Clic)
  2. 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

ToucheAction
ClicSelectionner la cellule (cross-highlight ligne + colonne)
Ctrl+ClicMulti-selection (ajouter/retirer)
Shift+ClicSelection de plage
Espace ou EntreeCocher/decocher : cree ou supprime l'allocation
DAssigner un driver a la selection
SupprSupprimer les allocations selectionnees
1 a 6Colorier : 1=Rouge 2=Orange 3=Jaune 4=Vert 5=Bleu 6=Violet
0Effacer la couleur
Ctrl+ASelectionner toutes les cellules cochees
EscapeDeselectionner tout
Clic droitMenu couleur contextuel (palette visuelle)

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 :

GroupeContenu
RechercheFiltre les membres par nom ou reference (sources et destinations)
FiltresInducteur (tous / specifique / sans driver) + Statut (draft / propose / valide)
Couleurs6 swatches cliquables pour filtrer par couleur + "Toutes" + "Sans couleur"
AffichageMasquer vides • Infobulles on/off • Replier lig./col.
ActionsCompteur selection + ☐ Cocher + ⚡ Driver + ✕ Supprimer (grises sans selection)
RaccourcisAide-memoire : Espace D 1-6 0

Filtres par colonne et par ligne (▼)

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
ToucheCouleurUsage suggere
1 RougeProbleme identifie, a revoir
2 OrangeQuestion ouverte, en attente
3 JauneEn discussion, pas tranche
4 VertConfirme par le client
5 BleuInformation complementaire necessaire
6 VioletCas particulier, exception
0Effacer 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 :

BoutonAction
▢ BPMNOuvre le diagramme BPMN contenant les elements lies a cette paire source/destination. Si une connexion BPMN existe, elle clignote pour attirer l'attention.
⚙ DriverOuvre 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 :

DeVersComment
BPMNMatchingBouton "☷ Matching" dans les proprietes d'un element ou d'une connexion
BPMNModeleLier un element a un module cree automatiquement le membre
MatchingBPMNBouton "▢ BPMN" dans le ruban (groupe Naviguer)
MatchingDriverBouton "⚙ Driver" ou D pour ouvrir le detail de l'inducteur
MatchingModelePanneau coulissant ✎ pour editer les membres inline
DriverMatchingBouton "☷ Matching" pour voir toutes les allocations du driver
MembreMatchingBouton "☷ 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 :

StatutIconeDans le modele ?Calculable ?Supprimable ?
BrouillongrisNonNonOui (1 clic)
ProposevioletOui, temporaireOui (test)Oui (1 clic)
ValidevertOui, definitifOuiNon (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)
  • Ctrl+V pour coller depuis Excel (REF <Tab> NOM)
  • 3 statuts : ✎ Brouillon (gris) → ★ Propose (violet) → ✓ Valide (vert)
  • Les elements partages entre espaces organisationnels sont surlignees ⇄
  • Suppression bloquee sur les elements valides
  • proposed_by : tracabilite de l'espace qui a propose l'element

Pagination

Pour les gros modules (100+ membres), la grille est paginee : 50 lignes × 40 colonnes. Les fleches ◀ ▶ naviguent entre les pages.

BPMN ↔ Modele ABC (synchronisation bidirectionnelle)

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 :

  1. Selectionner une tache → choisir un module dans le panneau droit
  2. Un bandeau jaune propose : "Creer [nom de la tache] dans [module] ?"
  3. Cliquer "Oui" → le membre est cree avec la ref en majuscules, auto-tagge avec l'espace organisationnel actif
  4. 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)

PhaseActionResultat
1. Connexion simpleCreer une fleche entre 2 taches liees a des modulesAllocation draft creee (sans driver)
2. Driver generiqueDans le panneau, choisir "⚡ Driver generique"DRV_GENERIC assigne (a affiner plus tard)
3. Driver precisChoisir un driver specifique dans la listeDriver 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 :

ActionDirectionEffet
Cocher une cellule dans le matchingMatching → BPMNSi les 2 membres ont des elements BPMN, une connexion est creee ou liee a l'allocation
Assigner un driver dans le matchingMatching → BPMNLe statut passe a "validated", la connexion BPMN passe en vert continu
Creer une fleche dans le BPMNBPMN → MatchingSi les elements sont lies a des membres, une allocation draft apparait dans la grille
Changer le statut d'une connexion BPMNBPMN → MatchingLe 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 :

SectionOptions
Couleur de fondPalette de 12-24 couleurs predefinies + couleur personnalisee
Couleur de traitMeme palette pour les fleches et bordures
Epaisseur4 niveaux : fin (1px), normal (2px), epais (3px), tres epais (4px)
Style de trait6 types : continu, tirets, points, tiret-point, double, fantome
Extremites3 formes de depart + 3 formes d'arrivee (fleche, losange, cercle, aucune)
Couleur du labelMeme palette pour le fond des etiquettes de connexion
InverserBouton pour inverser le sens d'une fleche sans la supprimer/recreer
RoutageCourbe (Bezier) ou Angles droits (orthogonal)

Calques par statut d'allocation

4 boutons dans le ruban permettent de masquer/afficher les connexions par statut :

  • Draft Connexions en brouillon (trait gris tirets)
  • Peut-etre Connexions incertaines (trait orange pointilles)
  • Propose Connexions proposees (trait violet mixte)
  • Valide Connexions validees (trait vert continu)

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

RaccourciAction
Ctrl+ZAnnuler (undo, max 50 niveaux)
Ctrl+YRetablir (redo)
Ctrl+C / Ctrl+VCopier / Coller elements selectionnes
Ctrl+ASelectionner tous les elements
Ctrl+FOuvrir la recherche
Suppr / DeleteSupprimer la selection
Shift+ClicCreer une connexion rapide (clic source puis clic destination)
Ctrl+ClicMulti-selection d'elements
EchapDeselectionner tout
+ / -Zoom avant / arriere
Ctrl+0Zoom 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 genereDispositionCorrespondance
Taches sourceColonne gauche (x=80)1 tache par membre du module source ayant au moins 1 allocation
Taches destinationColonne droite (x=450)1 tache par membre du module destination ayant au moins 1 allocation
ConnexionsFleches gauche → droite1 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

NiveauSourceBoutonResultat
MasterModele ABC complet"⚡ Generer depuis ABC" (toolbar BPMN)1 bloc par module + fleches entre modules avec compteurs
DetailPaire 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

UsageDescription
Atelier cibleSelectionner un espace dans le bandeau → ne voir que les elements qui concernent ce service. Ideal pour focaliser la seance sur un service specifique.
CouvertureLa matrice espaces × modules montre quels services ont ete couverts et lesquels manquent. Les zones non rattachees apparaissent en rouge.
JointuresLes 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

  1. Au lancement du calcul, la base SQLite est exportee en binaire et transferee au Worker (copie zero-copy via Transferable)
  2. Le Worker charge sql.js de facon autonome et execute tout le pipeline : etapes d'allocation, analyse des flux, cube PNL
  3. Le Worker envoie des messages de progression en temps reel (etape en cours, nombre de contributions, etc.)
  4. 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 :

ModeNavigateurWeb WorkerUI pendant calcul
http://localhostTous (Chrome, Edge, Firefox, Safari)✓ ActifReactive
file://Firefox✓ ActifReactive
file://Chrome, Edge✗ IndisponibleBloquee 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

ComposantTechnologieRole
FrontendHTML5 / CSS3 / JavaScript ES6+Interface utilisateur 100% client-side
Base de donneessql.js (SQLite compile en WASM)Stockage structure en memoire + IndexedDB
PersistanceIndexedDBSauvegarde automatique de la base SQLite
VisualisationD3.js v7Sankey, BPMN, graphiques SVG
Excel I/OSheetJS (XLSX) v0.20.3Import/export XLSX, parsing CSV
Calcul arriere-planWeb WorkerMoteur ABC non-bloquant

Organisation des fichiers (24 modules JS)

FichierLignesModuleRole
db.js~3500DBSchema, CRUD, migrations, queries
allocation-engine.js~1500AllocationEngineMoteur de calcul (8 types, SCC, convergence)
calc-worker.js~1400WorkerCopie du moteur pour Web Worker
driver-manager.js~3400DriverManagerMatrice Excel-like des drivers
matching-grid.js~1800MatchingGridMatrice de correspondance
bpmn-editor.js~4000BPMNEditorEditeur BPMN avec ruban
sankey-view.js~2000SankeyViewVisualisation Sankey D3
data-manager.js~3000DataManagerModules, dimensions, membres
gl-import.js~950GLImportImport GL multi-fichiers
formula-engine.js~600FormulaEngineCompilateur formules Excel-like
tag-manager.js~600TagManagerEspaces organisationnels
stress-test.js~1600StressTestTests de charge, 8 types
app.js~200AppOrchestrateur, 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...)

ColonneTypeDefautDescription
referenceTEXT PKIdentifiant unique du module (ex: NATURE, RESSOURCE)
nameTEXT NOT NULLNom affiche
descriptionTEXT''Description libre
order_in_groupINTEGER0Ordre dans la chaine d'allocation (0 = premier)
colorTEXT'#888888'Couleur hex pour l'UI et les graphiques
iconTEXT''Icone optionnelle
is_entry_pointINTEGER01 = module d'entree GL (un seul a la fois)

module_members — Elements (centres de cout, activites, prestations...)

ColonneTypeDefautDescription
idINTEGER PK AUTOIdentifiant auto-incremente
module_referenceTEXT NOT NULLFK vers modules.reference
dim_keyTEXT NOT NULLCle unique au sein du module (code metier)
labelTEXTLibelle affiche
descriptionTEXT''Description libre
order_in_groupINTEGER0Ordre d'affichage
parent_member_idINTEGERNULLFK vers module_members.id (hierarchie parent)
levelINTEGER0Niveau dans la hierarchie (0 = racine)
statusTEXT'validated'Statut : draft, proposed, validated
proposed_byINTEGERNULLID 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

ColonneTypeDefautDescription
referenceTEXT PKIdentifiant unique (ex: REGION, PRODUIT)
nameTEXT NOT NULLNom affiche
descriptionTEXT''Description
hierarchy_levelsINTEGER3Nombre de niveaux hierarchiques

dim_members — Valeurs d'une dimension (regions, produits...)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
dimension_referenceTEXT NOT NULLFK vers dimensions.reference
referenceTEXT NOT NULLCode du membre dimension
parent_referenceTEXTReference du parent (hierarchie)
nameTEXT NOT NULLLibelle
descriptionTEXT''Description
levelINTEGER0Niveau hierarchique
order_in_groupINTEGER0Ordre d'affichage

UNIQUE(dimension_reference, reference). Index : idx_dm_dim.

module_dimensions — Association modules ↔ dimensions

ColonneTypeDescription
module_referenceTEXT NOT NULLFK vers modules.reference
dimension_referenceTEXT NOT NULLFK vers dimensions.reference

PK composite (module_reference, dimension_reference).

module_member_dims — Rattachement membre → valeur dimension

ColonneTypeDescription
module_member_idINTEGER NOT NULLFK vers module_members.id
dimension_referenceTEXT NOT NULLFK vers dimensions.reference
dim_member_referenceTEXT NOT NULLFK vers dim_members.reference

PK composite (module_member_id, dimension_reference). Index : idx_mmd_member.

drivers — Inducteurs de cout (8 types)

ColonneTypeDefautDescription
referenceTEXT PKIdentifiant unique
nameTEXT NOT NULLNom
descriptionTEXT''Description
driver_typeINTEGER0Type (0=egal, 1=poids, 2=quantite, 3=matrice, 4=formule, 5=solde, 6=cascade, 7=prorata)
driver_sequenceINTEGER0Ordre d'execution
driver_formulaTEXT''Formule JS (type 4)
unitTEXT''Unite de mesure
formula_baseTEXT''Base de calcul pour formules
depends_onTEXT''Dependances (references CSV)
priorityINTEGER0Priorite d'execution

attributes — Attributs d'analyse personnalises

ColonneTypeDescription
referenceTEXT PKIdentifiant
nameTEXT NOT NULLNom
possible_valuesTEXT NOT NULLValeurs autorisees (CSV)

member_attributes — Valeurs d'attribut par membre

ColonneTypeDescription
module_member_idINTEGER NOT NULLFK vers module_members.id
attribute_referenceTEXT NOT NULLFK vers attributes.reference
valueTEXT NOT NULLValeur choisie

PK composite (module_member_id, attribute_reference).

Groupe 2 — Donnees operationnelles

gl_entries — Ecritures du Grand Livre

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
account_codeTEXTCode comptable
labelTEXTLibelle de l'ecriture
amountREAL0Montant (positif ou negatif)
entry_dateTEXT''Date de l'ecriture
resource_codeTEXT''Code ressource rattachee
resource_labelTEXT''Libelle ressource
period_referenceTEXT'2024-01'FK vers periods.reference
scenario_referenceTEXT'REEL'FK vers scenarios.reference
batch_idINTEGERNULLFK vers gl_import_batches.id

Index : idx_gl_period(period_reference, scenario_reference).

gl_import_batches — Lots d'import GL (tracabilite & versioning)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
filenameTEXT NOT NULLNom du fichier source
target_moduleTEXT NOT NULL'NATURE'Module cible de l'import
period_referenceTEXT NOT NULLPeriode
scenario_referenceTEXT NOT NULLScenario
entry_countINTEGER0Nombre d'ecritures importees
total_amountREAL0Montant total du lot
import_modeTEXT'append'Mode : append, replace_batch, replace_all
imported_atTEXTdatetime('now')Date/heure d'import
notesTEXT''Notes libres
statusTEXT'active'active, archived, deleted
versionINTEGER1Numero de version
parent_batch_idINTEGERNULLFK vers version precedente

gl_dim_mappings — Mapping ecritures GL → dimensions

ColonneTypeDescription
idINTEGER PK AUTOID auto
gl_entry_idINTEGER NOT NULLFK vers gl_entries.id
dimension_referenceTEXT NOT NULLFK vers dimensions.reference
dim_member_referenceTEXT NOT NULLValeur dimension rattachee

Index : idx_gldm_entry.

gl_column_rules — Regles de mapping colonnes GL

ColonneTypeDescription
idINTEGER PK AUTOID auto
column_nameTEXTNom de la colonne source
target_typeTEXTType cible (dimension, champ GL...)
dimension_referenceTEXTDimension cible si applicable

allocations — Regles d'allocation (source → destination)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
source_member_idINTEGER NOT NULLFK vers module_members.id (emetteur)
destination_member_idINTEGER NOT NULLFK vers module_members.id (recepteur)
driver_referenceTEXTFK vers drivers.reference
driver_quantityREAL0Quantite driver (type 2)
driver_weightREAL0Poids driver (type 1)
period_referenceTEXT'2024-01'Periode
scenario_referenceTEXT'REEL'Scenario
statusTEXT'validated'Statut : draft, proposed, validated
proposed_byINTEGERNULLID tag UO qui a propose

Index : idx_alloc_src, idx_alloc_dst, idx_alloc_period.

driver_values — Matrice de valeurs inducteurs

ColonneTypeDescription
idINTEGER PK AUTOID auto
driver_referenceTEXT NOT NULLFK vers drivers.reference
source_member_idINTEGERFK vers module_members.id
destination_member_idINTEGERFK vers module_members.id
valueREALValeur du driver
period_referenceTEXTPeriode
scenario_referenceTEXTScenario

member_instances — Couts saisis et calcules par periode

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
period_referenceTEXT NOT NULLPeriode
scenario_referenceTEXT NOT NULLScenario
module_member_idINTEGER NOT NULLFK vers module_members.id
entered_costREAL0Cout saisi manuellement
calculated_costREAL0Cout calcule par le moteur
revenueREAL0Revenu (optionnel)

UNIQUE(period_reference, scenario_reference, module_member_id). Index : idx_mi_period, idx_mi_member.

Groupe 3 — Resultats de calcul

Ces tables sont remplies par le moteur de calcul. Elles sont videes puis recalculees a chaque execution.

allocation_results — Montants alloues par paire

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
source_member_idINTEGERFK vers module_members.id (emetteur)
destination_member_idINTEGERFK vers module_members.id (recepteur)
driver_referenceTEXTInducteur utilise
allocated_amountREAL0Montant alloue
step_numberINTEGER0Etape du calcul

Index : idx_ar_period, idx_ar_src, idx_ar_dst, idx_ar_composite.

flow_analysis — Analyse des flux bruts

ColonneTypeDescription
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
source_member_idINTEGEREmetteur
destination_member_idINTEGERRecepteur
gross_amountREALMontant brut du flux
driver_referenceTEXTInducteur utilise
driver_weightREALPoids du driver dans ce flux
pct_of_source_outflowREAL% de la sortie totale de la source
pct_of_dest_inflowREAL% de l'entree totale de la destination

PK composite (period, scenario, source, destination). Index : idx_fa_period, idx_fa_src, idx_fa_dst.

member_flow_summary — Resume des flux par membre

ColonneTypeDescription Power BI
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
member_idINTEGERFK vers module_members.id
entered_costREALCout saisi (GL ou manuel)
calculated_costREALCout calcule apres allocation
total_costREALentered_cost + calculated_cost
gross_inflowREALTotal des flux entrants
gross_outflowREALTotal des flux sortants
net_retainedREALMontant net retenu
upstream_countINTEGERNombre de sources en amont
downstream_countINTEGERNombre de cibles en aval

PK composite (period, scenario, member_id). Table recommandee pour Power BI — joindre sur module_members.id pour obtenir les libelles.

net_contributions — Contributions nettes (analyse BFS)

ColonneTypeDescription
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
focal_member_idINTEGERMembre focal (point de vue)
source_member_idINTEGERSource du flux
destination_member_idINTEGERDestination du flux
net_amountREALContribution nette

PK composite (period, scenario, focal, source, destination). Index : idx_nc_period, idx_nc_focal.

pnl_cube — Cube PnL multidimensionnel

ColonneTypeDescription
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
row_dimTEXTDimension en ligne
row_memberTEXTMembre dimension en ligne
col_dimTEXTDimension en colonne
col_memberTEXTMembre dimension en colonne
amountREALMontant

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

ColonneTypeDescription
period_referenceTEXTPeriode
scenario_referenceTEXTScenario
member_idINTEGERFK vers module_members.id
attribute_nameTEXTNom de l'attribut
attribute_valueTEXTValeur de l'attribut
contribution_pctREAL% de contribution

PK composite (period, scenario, member_id, attribute_name, attribute_value). Index : idx_mda_period.

Groupe 4 — BPMN

bpmn_diagrams — Diagrammes de processus

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
nameTEXT NOT NULLNom du diagramme
descriptionTEXT''Description
parent_diagram_idINTEGERNULLFK vers bpmn_diagrams.id (hierarchie)
levelINTEGER10=master, 1=principal, 2=sous-processus
parent_element_idINTEGERNULLElement parent dans le diagramme parent
tag_idINTEGERNULLFK vers tags.id (entite organisationnelle liee)
created_atTEXTDate creation
updated_atTEXTDate derniere modification

bpmn_elements — Elements graphiques (taches, swimlanes, evenements...)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
diagram_idINTEGER NOT NULLFK vers bpmn_diagrams.id
typeTEXT NOT NULLtask, swimlane, start-event, end-event, gateway-xor, gateway-and, cost-center, kpi, annotation, document, excel-source, db-source
labelTEXT''Libelle affiche
xREAL0Position X
yREAL0Position Y
widthREAL120Largeur
heightREAL60Hauteur
swimlane_idINTEGERFK vers bpmn_elements.id (couloir parent, legacy)
linked_moduleTEXTFK vers modules.reference (lien ABC)
linked_member_idINTEGERFK vers module_members.id (lien ABC)
propertiesTEXT'{}'JSON : collapsed, border_width, fill_color, etc.
colorTEXTNULLCouleur de l'element
ref_diagram_idINTEGERNULLLien vers un autre diagramme (cross-ref)
ref_element_idINTEGERNULLLien vers un element d'un autre diagramme
is_subprocessINTEGER01 = cet element est un sous-processus
child_diagram_idINTEGERNULLDiagramme enfant si sous-processus
is_auto_generatedINTEGER01 = genere automatiquement depuis le modele ABC

bpmn_connections — Connexions entre elements

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
diagram_idINTEGER NOT NULLFK vers bpmn_diagrams.id
source_element_idINTEGER NOT NULLFK vers bpmn_elements.id (depart)
target_element_idINTEGER NOT NULLFK vers bpmn_elements.id (arrivee)
typeTEXT'sequence'Type de connexion
labelTEXT''Libelle sur la connexion
waypointsTEXT'[]'Points intermediaires JSON
allocation_idINTEGERNULLFK vers allocations.id (lien ABC)
colorTEXTNULLCouleur
label_detailTEXT''Detail du libelle (montant, %)
display_modeTEXT'both'Affichage : label, detail, both, none
stroke_widthINTEGER2Epaisseur du trait
dash_patternTEXT'solid'Motif : solid, 4,4, 8,4...
start_markerTEXT'none'Forme debut : none, arrow, circle, diamond
end_markerTEXT'arrow'Forme fin : none, arrow, circle, diamond
label_bgTEXT'#1E293B'Couleur fond du libelle
path_modeTEXT'bezier'Mode trace : bezier, straight, orthogonal
source_portTEXTNULLPort de depart (N, S, E, W)
target_portTEXTNULLPort d'arrivee (N, S, E, W)
is_auto_generatedINTEGER01 = genere depuis le modele ABC

Groupe 5 — Organisation & configuration

tags — Entites organisationnelles (organigramme hierarchique)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
referenceTEXT NOT NULL UNIQUECode unique (ex: DSI, RH, FIN)
nameTEXT NOT NULLNom
colorTEXT'#6B7280'Couleur
iconTEXT''Icone
descriptionTEXT''Description
parent_tag_idINTEGERNULLFK vers tags.id (hierarchie)
levelINTEGER0Niveau hierarchique
order_in_groupINTEGER0Ordre d'affichage

tag_assignments — Assignations tag ↔ entite (polymorphe)

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
tag_idINTEGER NOT NULLFK vers tags.id
entity_typeTEXT NOT NULLType entite : module_member, bpmn_element, allocation
entity_idINTEGER NOT NULLID de l'entite concernee
statusTEXT'draft'Statut : draft, proposed, validated
noteTEXT''Note
created_byTEXT''Auteur
created_atTEXTdatetime('now')Date creation

UNIQUE(tag_id, entity_type, entity_id). Index : idx_ta_tag, idx_ta_entity.

periods — Periodes de reference

ColonneTypeDescription
referenceTEXT PKIdentifiant (ex: 2024-01)
nameTEXT NOT NULLNom affiche (ex: Janvier 2024)

scenarios — Scenarios de simulation

ColonneTypeDescription
referenceTEXT PKIdentifiant (ex: REEL, BUDGET)
nameTEXT NOT NULLNom affiche

meta — Metadonnees cle/valeur

ColonneTypeDescription
keyTEXT PKCle (ex: schema_version, clientName)
valueTEXTValeur

app_state — Etat applicatif persistant

ColonneTypeDescription
keyTEXT PKCle d'etat
valueTEXTValeur

Groupe 6 — Tracabilite des imports

import_files — Historique de tous les fichiers importes

ColonneTypeDefautDescription
idINTEGER PK AUTOID auto
filenameTEXT NOT NULLNom du fichier
filepathTEXT''Chemin complet
categoryTEXT'other'Categorie : gl, costs, bulk, allocations, database, settings, other
target_moduleTEXT''Module cible si applicable
target_sectionTEXT''Section cible
file_sizeINTEGER0Taille en octets
row_countINTEGER0Nombre de lignes importees
formatTEXT''Format : csv, xlsx, json, sqlite
notesTEXT''Notes
statusTEXT'active'Statut : active, deleted
imported_atTEXTdatetime('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

  1. determineSteps() : analyse le graphe d'allocations, detecte les cycles (Tarjan SCC), genere l'ordre d'execution topologique
  2. stepLoadGL() : charge les ecritures GL dans le module d'entree (is_entry_point = 1)
  3. stepAllocate() : pour chaque paire source→destination, calcule les montants selon le type de driver
  4. stepSelfAllocate() : gere les allocations intra-module (convergence iterative, max 20 iterations)
  5. stepCycleResolve() : resoud les cycles SCC par amortissement (1/(iter+1))
  6. 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

ConstanteValeurUsage
CONVERGENCE_THRESHOLD0.01 EURSeuil minimum pour continuer les iterations
MAX_ITERATIONS20Self-allocate et cycle-resolve
NET_CONTRIBUTION_MIN1.0 EURPruning 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.

Modules principaux

ModuleFonctions cles
DBquery(), getModules(), getDrivers(), getEntryModule(), setEntryModule(), getGLBatches()...
AllocationEnginerunCalculation(), resetCalculation()
StressTestgenerateData(), generateBigModel(), runTypeTests(), runAndLog()
DriverManagerselectDriverAndFilter(), exportCSV(), showImportDialog()
MatchingGridrender(), drillDown(), backToMacro()
BPMNEditorloadDiagram(), syncMasterFromABC(), undo(), redo()
TagManagerrenderTagBar(), getActiveTagId(), isEntityVisible(), renderBadges()
Settingsget(), set(), getAll()

Exemples console

// 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

⇄ Imports / Exports (detail technique)

Formats CSV

Separateurs supportes : ; (defaut), ,, Tab. Detection automatique. Encodage : UTF-8 avec BOM.

Colonnes d'import des allocations (12 colonnes)

#ColonneDescription
1MODULE_SOURCECode module source
2MEMBRE_SOURCEdim_key du membre source (combinaison dimensions)
3PERIODE_SOURCEPeriode (2024-01)
4PHASE_SOURCEScenario (BUDGET, REEL)
5MODULE_CIBLECode module destination
6MEMBRE_CIBLEdim_key du membre destination
7PERIODE_CIBLEPeriode cible
8PHASE_CIBLEScenario cible
9INDUCTEURReference du driver
10POIDSdriver_weight
11QUANTITEdriver_quantity (forfait)
12VALEURdriver_value (volume)

Import GL : modes et detection doublons

  • 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

CategorieDescriptionModule source
Grand Livre (GL)Ecritures comptables importees via Import GLGLImport
Couts saisisCouts charges directement dans un moduleCostImport
Import en masseModules, membres, dimensions, drivers, attributsBulkImport
AllocationsRegles d'allocation importeesMatchingGrid
Bases SQLiteFichiers .sqlite restaures ou chargesDB.importDB
ParametresFichiers JSON de parametresSettings

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...)
  • Statut : actif (vert), archive (gris), supprime (rouge)
  • Restauration : possibilite de revenir a une version anterieure

🎨 Parametres d'apparence Sankey

Le diagramme Sankey est entierement personnalisable via Parametres > Sankey — Apparence.

Parametres disponibles

ParametreDescriptionDefaut
Opacite des liensTransparence de base des flux (0-100%)50%
Intensite surbrillanceForce du contraste quand un noeud est survole (0-100%)60%
Largeur des noeudsEpaisseur des barres de noeuds en pixels14px
Rayon des coinsArrondi des coins des noeuds2px
Epaisseur min. des liensLargeur minimum des flux en pixels1.5px
Bordure des noeudsAfficher/masquer le contour des barresActive
Bandes de colonnesBandes alternees par module pour la lisibiliteActive
AnimationsTransitions fluides au survol et au changementActive

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

BoutonDescriptionPrerequis
★ MembresExporte les membres du module selectionne (CSV)Module selectionne
€ CoutsExporte les ecritures GL du module pour la periode couranteModule selectionne
☍ DriverExporte les valeurs du driver selectionneDriver selectionne
☰ FichiersOuvre le gestionnaire de fichiers importes

⌨ Raccourcis clavier

Globaux

RaccourciAction
Ctrl+SSauvegarder le driver en cours d'edition
Ctrl+ZAnnuler (BPMN)
Ctrl+YRetablir (BPMN)

Matrice des drivers

RaccourciAction
↑↓←→Navigation cellule par cellule
TabCellule suivante (droite puis ligne suivante)
EnterCellule suivante (bas)
F2Editer la cellule selectionnee
DeleteEffacer la valeur
Ctrl+CCopier (TSV)
Ctrl+VColler depuis Excel

Dimensions (arbre)

RaccourciAction
↑↓Naviguer dans l'arbre
←→Replier/Deplier un groupe
EnterEditer le nom du membre
F2Editer la reference
DeleteSupprimer la selection
Ctrl+ATout selectionner
Ctrl+VColler depuis Excel (REF Tab NOM Tab PARENT)
Home / EndPremier / Dernier element

Matrice de correspondance

RaccourciAction
EspaceCocher/Decocher la cellule
DAssigner un driver
SCycler le statut (draft → propose → valide)
1-6Appliquer une couleur
0Effacer la couleur
DeleteSupprimer l'allocation
Ctrl+ClicMulti-selection
Shift+ClicSelection par plage (de la derniere cellule a celle-ci)
NAjouter/modifier une note (max 50 caracteres)
IActiver/desactiver les infobulles d'entete
WActiver/desactiver le retour a la ligne des entetes

BPMN

RaccourciAction
Ctrl+Z / Ctrl+YAnnuler / Retablir
DeleteSupprimer l'element selectionne
Ctrl+ClicMulti-selection
Shift+ClicCreer une connexion (depuis un element)
Ctrl+FRechercher un element
Cliquer-glisser sur le canvasSelection 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

SectionContenu
GeneralNom du projet, langue, devise, mode debug
AffichageTheme, format des nombres, decimales
BPMNGrille, snap, minimap, legende, taille des couloirs, cap connexions
ExportFormat par defaut (CSV/XLSX), separateur, encodage
Base de donneesTaille 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.

ActionDescription
Nouveau projet videCree une base de donnees vide contenant uniquement le schema, les periodes et les scenarios. Ideal pour demarrer un nouveau modele ABC depuis zero.
Reset + demoReinitialise la base de donnees avec des donnees de demonstration (modules exemples, membres, allocations).
Tout purgerSupprime 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 :

Prerequis

  1. Installer le driver SQLite3 ODBC (sqliteodbc)
  2. Exporter la base depuis l'appli : Outils → Exporter la base → sauvegarder le fichier .sqlite en local (ex: C:\Temp\abc_model.sqlite)
  3. Creer un DSN systeme via l'Administrateur ODBC Windows :
    • Ouvrir "Sources de donnees ODBC (64-bit)" dans Windows
    • Onglet DSN systeme → Ajouter → SQLite3 ODBC Driver
    • Data Source Name : SQLite_ABC
    • Database Name : chemin vers le fichier .sqlite exporte
    • OK

Connexion depuis Excel

  1. DonneesObtenir des donneesDepuis d'autres sourcesDepuis ODBC
  2. Selectionner le DSN SQLite_ABC dans la liste deroulante
  3. Quand la fenetre d'authentification apparait → cliquer sur "Base de donnees" dans le panneau de gauche
  4. Laisser tous les champs vides (pas de login/mot de passe pour SQLite)
  5. Cliquer Se connecter
  6. 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

TableContenu
modulesListe des modules (Nature, Ressource, Activite...)
module_membersMembres de chaque module avec couts et niveaux
allocationsMatrice de matching (source → destination)
allocation_resultsResultats du calcul ABC (montants alloues)
driver_valuesValeurs des drivers d'allocation
dimensionsDimensions 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

ActionDescription
CreerSaisissez un nom et cliquez sur « + Creer ». L'etat complet de la base de donnees est capture.
RestaurerCliquez sur ↺ pour remplacer le modele courant par le snapshot. Necessite une confirmation. La page se recharge.
ExporterCliquez sur ↓ pour telecharger le snapshot sous forme de fichier .sqlite (partageable ou utilisable comme sauvegarde).
ImporterCliquez sur « Importer » pour charger un fichier .sqlite en tant que nouveau snapshot.
SupprimerCliquez 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

ConceptDefinitionExemple
Ressource Element de cout tel qu'enregistre dans la comptabilite (compte du GL). C'est le point d'entree du modele. Salaires, loyers, amortissements, fournitures, licences logicielles
Activite 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 :

ModuleRoleExemples de membres
Nature (Charges)Point d'entree : les comptes comptables du Grand Livre621000 - Personnel externe, 612000 - Loyers, 681000 - Amortissements
RessourceRessources organisationnelles consommatricesEquipe Dev, Equipe Support, Infrastructures IT, Locaux
ActiviteActivites metier realiseesTraiter commandes, Developper features, Gerer incidents
PrestationServices ou produits delivresService Premium, Service Standard, Maintenance
Metier / ClientObjet de cout final (segment metier, client, BU)Division Retail, Division Corporate, Client A

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).

MethodeProduit A (10 000 unites)Produit B (500 unites)
Traditionnelle (CA au prorata)95% des charges indirectes5% des charges indirectes
ABC (nb commandes, nb references, controles qualite)60% des charges indirectes40% 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)

NiveauType d'inducteurExemples
UniteProportionnel au volume produitHeures-machine, matieres premieres par unite
Lot (batch)Lie au nombre de lots traitesNombre de commandes, nombre de lancements de production
ProduitLie a l'existence du produitNombre de references, nombre de gammes
EntiteLie a la structure organisationnelleNombre 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

CritereDescription
CausaliteL'inducteur doit refleter un lien reel entre le cout et sa consommation
MesurabiliteLes donnees doivent etre disponibles et fiables
ProportionnaliteQuand l'inducteur augmente, le cout augmente proportionnellement
Cout de collecteLe cout de mesure de l'inducteur doit etre raisonnable
ComprehensionLes operationnels doivent comprendre et valider l'inducteur

Types d'inducteurs dans l'outil

TypeComportementCas d'usage
EgalitaireRepartition egale entre toutes les ciblesFrais generaux partages equitablement, couts de structure
ProportionnelAu prorata des couts deja recus par les ciblesFrais de gestion proportionnels au poids financier
FixeMontant fixe par cible (le reste au prorata)Redevance fixe par entite, cout de licence par utilisateur
Base sur valeursAu prorata des valeurs saisies (ex: nb tickets, heures)Repartition par nombre de commandes, m2 occupes, FTE
FormuleExpression calculee combinant plusieurs variablesFormules complexes : =SI(A>100; A*0.8; A), moyennes ponderees
VolumeBase sur des volumes de production ou de transactionUnites produites, transactions traitees
% ManuelPourcentages saisis manuellement par l'utilisateurEnquetes temps, estimations managementales
Table de referenceValeurs provenant d'une table externeGrilles 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 :

  • Systemes d'information : ERP, CRM, ITSM (tickets), SIRH (temps, effectifs)
  • 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 methodologiqueFonctionnalite outilPage
Cadrage et objectifsTemplates de modele, parametres projetAccueil, Parametres
Cartographie des processusEditeur BPMN, diagrammes de fluxBPMN
Construction du modeleModules, dimensions, membresModele
Import donnees comptablesImport GL (XLSX/CSV), multi-fichiersImport GL
Regles d'allocationMatrice de matching, allocationsMatching, Allocations
InducteursDrivers (8 types), valeurs, formulesAllocations > Drivers
Calcul ABCMoteur sequentiel multi-periodesCalcul
Analyse et restitutionSankey, TCD, What-If, Rapport auditSankey, 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.

⚠ Pieges courants et bonnes pratiques

Les 10 erreurs les plus frequentes

#ErreurConsequenceSolution
1 Trop de modules/activites Modele ingerable, collecte impossible, maintenance couteuse 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

TermeDefinition
ABCActivity-Based Costing : methode d'allocation des couts basee sur les activites consommatrices de ressources
ABMActivity-Based Management : utilisation des resultats ABC pour piloter la performance (optimisation, pricing, make-or-buy)
ActiviteUnite de travail identifiable et mesurable, consommatrice de ressources et produisant un resultat
AllocationOperation de repartition d'un cout d'un element source vers un ou plusieurs elements cibles
Charge directeCout directement imputable a un objet de cout sans clef de repartition (ex: matiere premiere d'un produit)
Charge indirecteCout ne pouvant etre attribue directement et necessitant une cle de repartition (ex: loyer du siege)
ConservationPrincipe fondamental : le total des couts en sortie du modele doit etre egal au total en entree (a l'euro pres)
Cost poolRegroupement de couts partageant le meme inducteur d'allocation
DimensionAxe 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
FTEFull-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
MatchingMatrice de correspondance definissant les liens d'allocation entre les membres de deux modules consecutifs
MembreElement individuel d'un module (un compte comptable, une ressource, une activite, un produit)
ModuleNiveau d'analyse du modele ABC contenant un ensemble de membres de meme nature
Objet de coutEntite finale dont on calcule le cout complet (produit, service, client, projet, ligne metier)
OrphelinMembre ayant un cout saisi mais aucune allocation sortante : le cout ne sera pas propage
PhaseDistinction Budget (B) vs. Reel (R) permettant la comparaison dans un meme modele
ReconciliationVerification que le total des couts importes dans le modele correspond au total du Grand Livre source
RessourceMoyen mis en oeuvre par l'organisation (personnes, equipements, locaux) consommant des charges comptables
SankeyDiagramme de flux visualisant la propagation des couts entre modules, avec largeur proportionnelle aux montants
SnapshotSauvegarde instantanee de l'etat complet du modele dans IndexedDB, permettant de revenir a un etat anterieur. Persiste entre les sessions.
TCDTableau Croise Dynamique : outil d'analyse multidimensionnelle des resultats du calcul ABC
TDABCTime-Driven ABC : variante simplifiee de l'ABC utilisant le temps comme inducteur principal
What-IfSimulation de scenarios : modifier des parametres (volumes, poids) et observer l'impact sur les couts
Allocations nettes
Vue
Actions
Affichage
▤ Lignes
▥ Colonnes
∑ Mesures
⊞ Filtres