Il arrive un moment, dans la vie de tout distributeur, où Excel cesse d'être un outil de gestion pour devenir un problème de gestion. Le symptôme est toujours le même : chaque responsable a son propre fichier, les chiffres ne concordent pas d'un service à l'autre et la direction décide avec des informations qui ont entre deux et sept jours de retard. C'est exactement là qu'en était notre client lorsqu'il nous a contactés.
Ce distributeur de produits surgelés est présent sur trois îles —Grande Canarie, Tenerife et Lanzarote— et réalise un peu plus de 14 millions d'euros de chiffre d'affaires annuel. Son catalogue compte plus de 600 références actives : poissons, fruits de mer, viandes, volailles et plats cuisinés. Il sert environ 280 clients actifs : hôtels, restaurants, supermarchés et restauration collective.
À notre arrivée, le paysage technologique était le suivant : l'ERP principal était Oracle SIGES, utilisé pour les achats, les ventes, la facturation et la comptabilité. En parallèle, une base PostgreSQL maison permettait à l'équipe d'entrepôt de gérer le stock en temps réel (les limites du module de stock de SIGES avaient motivé ce développement parallèle). Et puis il y avait les fichiers Excel : au moins huit classeurs différents, que plusieurs personnes des équipes financière et commerciale mettaient à jour à la main chaque semaine à partir d'exports de l'ERP.
Le problème central était l'absence de visibilité sur les marges. La direction savait combien elle vendait et combien elle achetait globalement, mais ne pouvait pas répondre à des questions de base : quelle catégorie de produits a la meilleure marge ce mois-ci ? Quelle île est la plus rentable ? Quels clients génèrent le plus de volume mais le moins de marge ? Pour répondre à n'importe laquelle de ces questions, le directeur financier avait besoin de trois à cinq jours de travail manuel.
Les ventes et les achats se trouvaient dans Oracle SIGES. Le stock réel, dans PostgreSQL. Les prix moyens pondérés (PMP) —indicateur essentiel dans la distribution pour calculer la marge réelle de chaque vente— étaient dans Excel. Aucun système ne communiquait avec les autres. Pour calculer la marge d'une vente, il fallait rapprocher à la main le prix de vente de SIGES et le PMP du fichier Excel correspondant.
Dans le meilleur des cas, les données des tableaux de bord de direction avaient 24 à 48 heures de retard. Les exports de SIGES étaient lancés manuellement et traités dans Excel le lendemain matin. En pratique, la plupart des rapports dataient de 3 à 7 jours.
Il n'existait aucun rapport systématique de marge par catégorie de produits, par client, par île ou par commercial. Le calcul existait en tant que concept dans l'ERP, mais la structure des tables de SIGES (en particulier la table TCABMOVISTOCKS et ses types de documents CDCLADOC) rendait difficile l'extraction directe d'une marge par vente sans un processus ETL dédié.
90 % du savoir sur la manière d'interpréter les données était dans la tête de deux personnes : le directeur financier et le responsable des achats. Si l'une des deux était absente, l'information s'arrêtait. Il n'y avait ni documentation du processus, ni contrôles automatiques, ni traçabilité des modifications dans les fichiers Excel.
Nous avons proposé une architecture en trois briques : un Data Warehouse sur PostgreSQL managé dans AWS comme couche de stockage et de transformation, des pipelines ETL en Python + Apache Airflow pour extraire et charger les données depuis les sources, et Power BI Embedded comme couche de visualisation accessible depuis le navigateur, sans licences de bureau.
L'extraction depuis SIGES a été la partie la plus délicate du projet. La base Oracle présente une structure de tables héritée, à la nomenclature cryptique, et les types de mouvements de stock sont codés dans le champ CDCLADOC de TCABMOVISTOCKS, avec des valeurs qui indiquent s'il s'agit d'une vente, d'un retour, d'un transfert entre entrepôts ou d'un ajustement d'inventaire. Il a fallu comprendre précisément quelles valeurs de CDCLADOC correspondaient à des ventes réelles (aux clients finaux, hors transferts internes) pour construire correctement le compte d'exploitation.
Le pipeline d'extraction utilise une connexion JDBC vers Oracle et s'exécute via Airflow avec des rafraîchissements toutes les heures, en chargeant de manière incrémentale les mouvements de la dernière heure. La latence des tableaux de bord est passée de 24-48 heures à moins d'une heure. Les données sont chargées dans une couche de staging, puis transformées par des traitements versionnés en tables dimensionnelles du modèle en étoile.
Le prix moyen pondéré est l'indicateur le plus important pour un distributeur : il reflète le coût réel de chaque unité vendue, pondéré par les différents achats qui composent le stock disponible. Sa formule est simple en théorie (PMP = (Stock précédent × PMP précédent + Quantité entrée × Prix d'entrée) / (Stock précédent + Quantité entrée)), mais en pratique elle dépend d'une mise à jour correcte à chaque mouvement d'entrée.
Dans SIGES, le PMP est mis à jour automatiquement à chaque bon de réception, mais certaines situations le faussent : retours clients réintégrés au stock au prix de vente, régularisations d'inventaire et achats assortis de remises rétroactives. Le pipeline ETL comprend une couche de contrôle du PMP qui détecte les anomalies statistiques et alerte (variations de plus de 15 % du PMP d'une référence en une seule journée).
Le résultat final se compose de quatre vues principales dans Power BI, accessibles depuis le navigateur avec l'authentification de l'entreprise :
L'impact le plus immédiat n'a pas été le gain de temps, mais les découvertes. Dès la première semaine d'utilisation du tableau de bord, la direction a identifié trois situations invisibles avec l'ancien système :
La clôture mensuelle, qui demandait cinq jours de travail manuel au directeur financier, se limite désormais à deux heures de revue et de validation du tableau de bord. Le ROI du projet a été atteint en quatre mois, en ne comptant que les gains liés à la correction des prix des plats cuisinés et à l'optimisation du stock de fruits de mer.
La complexité de SIGES était connue d'avance, mais on n'en mesure la véritable ampleur qu'une fois face au modèle de données. La nomenclature des tables (TCABMOVISTOCKS, TDETMOVISTOCKS, TARTIGEN, TCLIENTES) obéit à une logique propre qui demande du temps avant de pouvoir construire la moindre extraction fiable. Documenter précisément quel CDCLADOC utiliser pour chaque type de mouvement a été décisif pour que le compte d'exploitation concorde avec la comptabilité officielle.
Le second enseignement a été l'importance d'impliquer l'équipe financière dès le premier jour. Non pas comme valideurs en fin de projet, mais comme co-concepteurs du modèle de données et des KPI. Les marges qui comptent pour le directeur financier ne sont pas celles qui comptent pour le dirigeant. Avoir cette conversation en semaine un, et non en semaine six, a évité deux semaines de refonte.
Nous pouvons vous accompagner de votre situation actuelle jusqu'à un tableau de bord de direction offrant une visibilité sur les marges actualisée toutes les heures. Quel que soit votre ERP.
Parlons-enMai 2026
CybersécuritéAvril 2026
ServiceVoir le service complet
Un réseau sécurisé entre les agences, Oracle SIGES comme système commun et une IA qui lit factures, bons de livraison et commandes.
Parlons-en
Parlez-nous de votre projet : nous vous proposerons la solution la plus adaptée, sans engagement.