lumnik. / scénarios Tous les scénarios · English

Chaque ligne de l'export Excel retrouve sa région et son client

Objectif Lire un rapport Excel aux cellules fusionnées comme une table, une ligne par vente.

Les ventes envoient chaque mois un rapport Excel. Un groupe par client, la région et le client dans des cellules fusionnées, un sous-total sous chaque groupe. En CSV, une cellule fusionnée ne garde sa valeur que sur la première ligne.

ventes_2026-09.csv
Région;Client;Date;Pièce;Article;Quantité;Montant HT
Nord;Boulangerie des Tilleuls;01/09/2026;FA26090001;Farine T65 25 kg;1;18,40
;;04/09/2026;FA26090002;Sucre semoule 10 kg;8;103,20
;;07/09/2026;FA26090003;Beurre AOP 5 kg;3;124,50
;;10/09/2026;FA26090004;Levure fraîche 1 kg;10;32,00
;;13/09/2026;FA26090005;Chocolat noir 64 % 5 kg;5;290,00
;;16/09/2026;FA26090006;Crème 35 % 5 L;12;273,00
;;19/09/2026;FA26090007;Œufs plein air x180;7;277,20
;;22/09/2026;FA26090008;Amandes effilées 1 kg;2;32,60
;;25/09/2026;FA26090009;Farine T65 25 kg;9;165,60
;;28/09/2026;FA26090010;Sucre semoule 10 kg;4;51,60
;;03/09/2026;FA26090011;Beurre AOP 5 kg;11;456,50
;;06/09/2026;FA26090012;Levure fraîche 1 kg;6;19,20
;;09/09/2026;FA26090013;Chocolat noir 64 % 5 kg;1;58,00
;;12/09/2026;FA26090014;Crème 35 % 5 L;8;182,00
;;15/09/2026;FA26090015;Œufs plein air x180;3;118,80
;;18/09/2026;FA26090016;Amandes effilées 1 kg;10;163,00
;;21/09/2026;FA26090017;Farine T65 25 kg;5;92,00
;;24/09/2026;FA26090018;Sucre semoule 10 kg;12;154,80
;;27/09/2026;FA26090019;Beurre AOP 5 kg;7;290,50

… 1078 lignes de plus

manifests/20-sales-line.yaml
kind: Entityname: sales_line_blabel: Ligne de ventedescription: "One sale line of a monthly Excel export: its region and client, its date, invoice, article, quantity and amount."match: [piece]scopes: [sales-b]columns:  piece: { label: "Pièce" }  month: { label: "Mois" }  region: { label: "Région" }  client: { label: "Client" }  sale_date: { label: "Date" }  article: { label: "Article" }  quantity: { label: "Quantité" }  amount: { label: "Montant HT" }sources:  - table: t_scenario_excel_b    map: { piece: piece, month: month, region: region, client: client, sale_date: sale_date, article: article, quantity: quantity, amount: amount }
ventes_2026-10.csv
Région;Client;Date;Pièce;Article;Quantité;Montant HT
;;01/10/2026;FA26100001;Farine T65 25 kg;1;18,40
;;04/10/2026;FA26100002;Sucre semoule 10 kg;8;103,20
;;07/10/2026;FA26100003;Beurre AOP 5 kg;3;124,50
;Total Boulangerie des Tilleuls;;;;12;246,10
Est;Fromagerie du Val;02/10/2026;FA26100004;Sucre semoule 10 kg;2;25,80
;;05/10/2026;FA26100005;Beurre AOP 5 kg;9;373,50
;;08/10/2026;FA26100006;Levure fraîche 1 kg;4;12,80
;;11/10/2026;FA26100007;Chocolat noir 64 % 5 kg;11;638,00
;;14/10/2026;FA26100008;Crème 35 % 5 L;6;136,50
;Total Fromagerie du Val;;;;32;1 186,60
Ouest;Épicerie Lemoine;03/10/2026;FA26100009;Beurre AOP 5 kg;3;124,50
;;06/10/2026;FA26100010;Levure fraîche 1 kg;10;32,00
;;09/10/2026;FA26100011;Chocolat noir 64 % 5 kg;5;290,00
;;12/10/2026;FA26100012;Crème 35 % 5 L;12;273,00
;Total Épicerie Lemoine;;;;30;719,50

Limites

  • fill-down suit l'ordre du fichier: sort-by à côté est refusé.
  • Une ligne écartée par filter-where ne reporte rien: la première ligne d'un groupe ne doit pas être filtrée.
  • Fichiers synthétiques, clients fictifs.

Ventes · Excel

Le rapport des ventes est un Excel.

Fait pour l'œil, pas pour une table.

Deux mois, 1097 lignes de vente

Le problème

Les cellules fusionnées se vident.

  • En CSV, seule la première ligne garde le client.
  • Les suivantes sont vides.

Ce qui n'est pas modifié

Le rapport reste tel quel.

  • Le même export, chaque mois.
  • Rien n'est retouché à la main.

Le piège

Un groupe coupé en deux.

  • Le hub lit par morceaux de 500 lignes.
  • Un client est à cheval sur deux.

Ce qu'il a fallu écrire

fill-down: { columns: [region, client] }

Une ligne.

  • La valeur descend sur son groupe.
  • Elle passe d'un morceau à l'autre.
  • Deux manifestes, 50 lignes.

La preuve

13 603,90, le sous-total retrouvé.

  • 84 lignes, toutes au bon client.
  • Les 15 sous-totaux comptés à part.

La limite

L'ordre du fichier compte.

  • fill-down suit les lignes dans l'ordre.
  • Un tri à côté est refusé.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →