Automatiser le pré-traitement des données FAB-DIS : la méthode intelligente
Vous ouvrez votre fichier FAB-DIS fraîchement reçu du fournisseur et vous commencez à le « nettoyer » : supprimer des colonnes, corriger des formats, ajouter des calculs… Puis un collègue vous demande une info du fichier d’origine. Problème : vous l’avez écrasé. Ou pire : vous avez introduit une erreur qui corrompt toutes vos données sans vous en apercevoir.
Le pré-traitement automatisé résout ce problème. Au lieu de modifier directement le fichier source, vous créez automatiquement une copie de travail où toutes les transformations sont appliquées de manière contrôlée, traçable et réversible. Le fichier FAB-DIS original reste intact, vos données sont sécurisées, et votre workflow devient industriel.
Cet article vous présente la méthode complète du pré-traitement intelligent : comprendre les blocs FAB-DIS 3.0, créer une zone de sécurité, automatiser les 3 niveaux de traitement (basique, intermédiaire, avancé), et mettre en place un workflow professionnel.
💡 AutoExcel automatise votre workflow FAB-DIS de bout en bout
Nous créons des solutions de pré-traitement sur mesure qui créent automatiquement vos copies de travail, appliquent vos règles métier et préservent toujours vos fichiers source. Demandez une démo personnalisée.
⚠️ Les 5 erreurs fatales du traitement direct
Modifier directement un fichier FAB-DIS source expose à des risques majeurs :
- 🔥 Perte de données irréversible : une mauvaise manipulation, et vos données d’origine sont perdues à jamais
- ⚠️ Corruption silencieuse : une formule erronée qui se propage sur 5 000 lignes sans que vous le remarquiez
- 🔄 Impossibilité de reproduire : vous ne savez plus quelles transformations ont été appliquées
- 👥 Travail en équipe impossible : chacun modifie sa version, impossible de synchroniser
- 📊 Absence de traçabilité : en cas d’audit ou de litige, vous ne pouvez pas prouver l’origine des données
Coût moyen d’une corruption de données non détectée : 2 500 à 15 000 €
La philosophie du pré-traitement : la règle d’or de la donnée
Toute transformation doit s’effectuer sur une copie de travail automatiquement générée et horodatée.
Le pré-traitement des données repose sur un principe fondamental de l’ingénierie des données : la séparation entre données brutes et données transformées. Voici pourquoi cette approche est indispensable :
Les 3 piliers du pré-traitement intelligent
Le fichier FAB-DIS original est stocké dans un dossier « Archives » et n’est JAMAIS modifié.
Chaque traitement génère automatiquement une copie horodatée (FAB-DIS_20260125_1430.xlsx)
Un fichier log enregistre toutes les transformations appliquées avec date/heure/utilisateur
Architecture du workflow de pré-traitement
Flux de traitement sécurisé
Archivé
Modifiable
Enrichissement
Validé
Comprendre la structure FAB-DIS 3.0 : les blocs de données
Le format FAB-DIS 3.0 structure les données en « blocs » thématiques. Comprendre cette architecture est essentiel pour un pré-traitement intelligent : vous ne traiterez pas tous les blocs de la même manière.
Les 5 blocs principaux (obligatoires)
B00 – Cartouche
Métadonnées : émetteur, date, devise, version
Traitement : Lecture uniquement
B01 – Commerce
Cœur du catalogue : références, libellés, tarifs, GTIN
Traitement : Nettoyage intensif
B02 – Logistique
Dimensions, poids, conditionnements
Traitement : Validation formats
B03 – Média
Photos, vidéos, fiches produits, URLs
Traitement : Vérification liens
B04 – Réglementaire
Éco-contribution, réparabilité, conformité
Traitement : Extraction sélective
Les blocs conditionnels (optionnels)
| Bloc | Contenu | Fréquence de présence |
|---|---|---|
| C01 – Extension | Made In, garanties, aides | ~40% des FAB-DIS |
| C02 – Correspondance | Pièces de rechange, consommables | ~30% des FAB-DIS |
| C03 – Variante | Tailles, couleurs, matières | ~25% des FAB-DIS |
| C04 – ETIM | Caractéristiques techniques normalisées | ~60% des FAB-DIS (secteur électrique/BTP) |
| C05 – Arrêt | Produits retirés, notices, SAV | ~20% des FAB-DIS |
| C06 – Substitution | Produits de remplacement | ~15% des FAB-DIS |
💡 Principe du traitement partiel intelligent : Vous n’avez probablement besoin que de 20 à 30% des colonnes du FAB-DIS pour votre usage. Le pré-traitement consiste à identifier, extraire et nettoyer uniquement ces colonnes essentielles, ignorant le reste. Gain de temps : 60 à 70%.
Les 3 niveaux de pré-traitement automatisé
Le pré-traitement se décline en 3 niveaux de sophistication. Choisissez le niveau adapté à votre contexte et vos besoins.
Niveau 1 : Pré-traitement basique (essentiel)
Objectif : Créer automatiquement une copie de travail et extraire uniquement les colonnes essentielles du bloc B01_Commerce.
Ce qui est fait automatiquement :
- ✅ Copie du fichier source vers un dossier « Travail » avec nom horodaté
- ✅ Extraction des 15 colonnes principales de B01 (REFCIALE, LIBELLE80, TARIF, TVA, GTIN, etc.)
- ✅ Suppression des lignes totalement vides
- ✅ Création d’une feuille « Données_Travail » propre
Script Office Scripts Niveau 1 :
function main(workbook: ExcelScript.Workbook) {
// 1. Identifier la feuille B01_Commerce
let sourceSheet = workbook.getWorksheet("B01_Commerce");
if (!sourceSheet) {
console.log("❌ Feuille B01_Commerce introuvable");
return;
}
// 2. Créer ou nettoyer la feuille de travail
let workSheet = workbook.getWorksheet("Donnees_Travail");
if (workSheet) {
workSheet.delete();
}
workSheet = workbook.addWorksheet("Donnees_Travail");
// 3. Définir les colonnes essentielles à extraire
const essentialColumns = [
"MARQUE", "REFCIALE", "GTIN", "LIBELLE40", "LIBELLE80", "LIBELLE240",
"DATETARIF", "TARIF", "QT", "TVA", "UB", "DELAI",
"FAM1", "FAM1L", "FAM2", "FAM2L"
];
// 4. Récupérer les en-têtes source
const sourceHeaders = sourceSheet.getRange("1:1").getValues()[0];
const colMapping: {[key: string]: number} = {};
sourceHeaders.forEach((header, index) => {
const headerStr = String(header).toUpperCase().trim();
if (essentialColumns.includes(headerStr)) {
colMapping[headerStr] = index;
}
});
// 5. Créer les en-têtes dans la feuille de travail
const workHeaders: string[] = [];
essentialColumns.forEach(col => {
if (colMapping[col] !== undefined) {
workHeaders.push(col);
}
});
workSheet.getRange(1, 1, 1, workHeaders.length).setValues([workHeaders]);
// 6. Copier uniquement les colonnes essentielles
const sourceData = sourceSheet.getUsedRange();
const sourceValues = sourceData.getValues();
const workData: any[][] = [];
for (let i = 1; i < sourceValues.length; i++) {
const sourceRow = sourceValues[i];
// Vérifier que la ligne n'est pas vide
const isEmpty = sourceRow.every(cell => !cell || String(cell).trim() === "");
if (isEmpty) continue;
const workRow: any[] = [];
essentialColumns.forEach(col => {
if (colMapping[col] !== undefined) {
workRow.push(sourceRow[colMapping[col]]);
}
});
workData.push(workRow);
}
// 7. Écrire les données dans la feuille de travail
if (workData.length > 0) {
workSheet.getRange(2, 1, workData.length, workHeaders.length)
.setValues(workData);
}
console.log("✅ Pré-traitement Niveau 1 terminé !");
console.log(`📊 ${workData.length} produits extraits`);
console.log(`📋 ${workHeaders.length} colonnes conservées sur ${sourceHeaders.length}`);
}Résultat : Une nouvelle feuille « Donnees_Travail » contenant uniquement vos 15 colonnes essentielles, prête pour les traitements suivants.
Niveau 2 : Pré-traitement intermédiaire (optimisé)
Objectif : En plus du Niveau 1, effectuer les nettoyages basiques automatiques : espaces, majuscules, formats de prix.
Ce qui est ajouté automatiquement :
- ✅ Suppression des espaces multiples dans tous les libellés
- ✅ Conversion des libellés en casse titre (Première Lettre Majuscule)
- ✅ Nettoyage des codes GTIN (suppression espaces, validation format)
- ✅ Conversion TVA décimale en pourcentage (0.2 → 20%)
- ✅ Formatage des prix (2 décimales, séparateur correct)
- ✅ Ajout d’une colonne « TVA_POURCENT » calculée
Extension du script Niveau 1 :
// Après l'extraction des données (ligne workData.push)
// Ajoutez ces transformations :
// Fonction de nettoyage de texte
function cleanText(text: string): string {
if (!text) return "";
return String(text)
.replace(/\s+/g, ' ') // Espaces multiples → 1 espace
.trim()
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
// Fonction de validation GTIN
function cleanGTIN(gtin: string): string {
const cleaned = String(gtin).replace(/\s/g, '').trim();
if (/^\d{8}$|^\d{12}$|^\d{13}$|^\d{14}$/.test(cleaned)) {
return cleaned;
}
return ""; // GTIN invalide → vide
}
// Dans la boucle de copie, transformez les données :
const workRow: any[] = [];
essentialColumns.forEach((col, idx) => {
if (colMapping[col] !== undefined) {
let value = sourceRow[colMapping[col]];
// Nettoyage selon le type de colonne
if (col.includes("LIBELLE")) {
value = cleanText(value);
} else if (col === "GTIN") {
value = cleanGTIN(value);
} else if (col === "TARIF") {
value = Number(value).toFixed(2);
} else if (col === "TVA") {
// Garder le format décimal pour la colonne d'origine
value = Number(value);
}
workRow.push(value);
}
});
// Ajouter une colonne TVA en pourcentage
if (colMapping["TVA"] !== undefined) {
const tvaPourcent = Number(sourceRow[colMapping["TVA"]]) * 100;
workRow.push(tvaPourcent);
}
workData.push(workRow);
// N'oubliez pas d'ajouter "TVA_POURCENT" dans les en-têtes :
const workHeaders: string[] = [];
essentialColumns.forEach(col => {
if (colMapping[col] !== undefined) {
workHeaders.push(col);
}
});
workHeaders.push("TVA_POURCENT"); // Colonne calculéeRésultat : Vos données sont extraites ET nettoyées automatiquement, prêtes pour l’import ou l’enrichissement.
Niveau 3 : Pré-traitement avancé (industriel)
Objectif : Traitement multi-blocs avec enrichissement, validation croisée et rapport de qualité.
Ce qui est ajouté automatiquement :
- ✅ Fusion des données de B01_Commerce + B02_Logistique + B04_Réglementaire
- ✅ Validation croisée (ex: GTIN présent dans B01 doit avoir des médias dans B03)
- ✅ Enrichissement automatique (calcul volume depuis dimensions, poids volumétrique, etc.)
- ✅ Détection et signalement des incohérences
- ✅ Génération d’un rapport de qualité détaillé
- ✅ Export multi-formats (Excel propre + CSV pour import ERP)
Cas d’usage : Catalogues complexes avec médias, conformité réglementaire stricte, imports dans plusieurs systèmes (ERP + E-commerce + PIM).
📊 Comparatif des 3 niveaux :
| Critère | Niveau 1 | Niveau 2 | Niveau 3 |
|---|---|---|---|
| Temps de traitement | 5-10 sec | 15-30 sec | 1-3 min |
| Colonnes traitées | 15 | 15-20 | 30-50 |
| Blocs FAB-DIS utilisés | B01 uniquement | B01 + B02 | Tous blocs |
| Gain de temps vs manuel | 70% | 85% | 95% |
Workflow complet de pré-traitement automatisé
Voici comment intégrer le pré-traitement dans votre processus quotidien de gestion des catalogues fournisseurs :
Réception et archivage automatique
Configurez une règle Outlook ou un flux Power Automate qui détecte l’arrivée d’un FAB-DIS par email et le sauvegarde automatiquement dans un dossier OneDrive « Archives/FAB-DIS/[DATE] » en lecture seule.
Création automatique de la copie de travail
Un script Office Scripts ou un flux Power Automate crée une copie du fichier dans « Travail/FAB-DIS » avec un nom horodaté : FABDIS_MARQUE_20260125_1430.xlsx
Exécution du pré-traitement
Le script de pré-traitement (Niveau 1, 2 ou 3 selon vos besoins) s’exécute automatiquement sur la copie de travail : extraction, nettoyage, validation.
Génération du rapport de qualité
Un rapport automatique vous indique : nombre de produits traités, anomalies détectées, score de qualité, colonnes manquantes.
Notification et validation
Vous recevez un email avec le rapport. Si score > 90% : validation automatique. Si score < 90% : vous intervenez uniquement sur les anomalies signalées.
Suite du traitement (enrichissement, import)
Le fichier pré-traité est prêt pour les étapes suivantes : calcul de tarifs personnalisés, import dans l’ERP, génération de catalogue.
Exemple de structure de dossiers recommandée
📁 OneDrive/FAB-DIS/
│
├── 📁 Archives/ ← LECTURE SEULE, fichiers originaux
│ ├── 📁 2026-01/
│ │ ├── CAME_FABDIS_20260103.xlsx
│ │ ├── CAME_FABDIS_20260110.xlsx
│ │ └── CAME_FABDIS_20260125.xlsx
│ └── 📁 2025-12/
│
├── 📁 Travail/ ← Copies de travail modifiables
│ ├── CAME_FABDIS_20260125_1430_WORK.xlsx
│ └── CAME_FABDIS_20260125_0900_WORK.xlsx
│
├── 📁 Traites/ ← Fichiers finaux validés
│ ├── CAME_Catalogue_2026-01_FINAL.xlsx
│ └── CAME_Import_ERP_2026-01.csv
│
└── 📁 Logs/ ← Rapports de traitement
├── Log_20260125_1430.txt
└── Rapport_Qualite_20260125.xlsxLes colonnes critiques du bloc B01_Commerce à pré-traiter
Le bloc B01_Commerce contient 47 colonnes. Toutes ne nécessitent pas le même niveau de traitement. Voici la classification par priorité :
Colonnes critiques (traitement obligatoire)
| Colonne | Usage | Pré-traitement nécessaire |
|---|---|---|
| REFCIALE | Code article unique | ✓ Suppression espaces, validation unicité |
| LIBELLE80 | Description principale | ✓ Nettoyage espaces, casse titre, longueur |
| TARIF | Prix d’achat HT | ✓ Format décimal, validation > 0 |
| TVA | Taux de TVA | ✓ Conversion décimal → %, validation valeurs légales |
| UB | Unité de base | ✓ Mapping vers codes standards (UN→PCS, EA→PCS) |
| GTIN | Code-barres EAN | ✓ Validation format 8/12/13/14 chiffres, checksum |
| LIBELLE240 | Description longue | ✓ Nettoyage espaces, vérification longueur max |
Colonnes importantes (traitement recommandé)
| Colonne | Usage | Pré-traitement recommandé |
|---|---|---|
| MARQUE | Marque commerciale | Standardisation casse, suppression espaces |
| FAM1, FAM2, FAM3 | Catégories produit | Nettoyage, mapping vers codes internes |
| QT | Quantité disponible | Validation numérique, détection valeurs négatives |
| DELAI | Délai de livraison | Validation numérique, conversion jours |
| DATETARIF | Date du tarif | Validation format date, conversion ISO |
Colonnes secondaires (traitement optionnel)
Les colonnes comme MKT1-5, GAMME, FONCTION, REFINFOR peuvent être conservées telles quelles ou ignorées selon vos besoins. Le principe du traitement partiel intelligent : ne traitez que ce qui est nécessaire à votre usage.
💡 Règle des 80/20 : Dans 80% des cas, vous n’utilisez que 20% des colonnes d’un FAB-DIS. Identifiez vos 10-15 colonnes essentielles et concentrez votre pré-traitement sur celles-ci. Ignorez le reste.
Script complet Niveau 2 : pré-traitement intelligent
Voici le script Office Scripts complet qui combine extraction + nettoyage automatique sur les colonnes critiques :
function main(workbook: ExcelScript.Workbook) {
// 1. Identifier la feuille B01_Commerce
let sourceSheet = workbook.getWorksheet("B01_Commerce");
if (!sourceSheet) {
console.log("❌ Feuille B01_Commerce introuvable");
return;
}
// Vérifier si la feuille a des données
const usedRange = sourceSheet.getUsedRange();
if (!usedRange) {
console.log("❌ La feuille B01_Commerce est vide");
return;
}
// 2. Créer ou nettoyer la feuille de travail
let workSheet = workbook.getWorksheet("Donnees_Travail");
if (workSheet) {
workSheet.delete();
}
workSheet = workbook.addWorksheet("Donnees_Travail");
// 3. Définir les colonnes essentielles à extraire
const essentialColumns: string[] = [
"MARQUE", "REFCIALE", "GTIN", "LIBELLE40", "LIBELLE80", "LIBELLE240",
"DATETARIF", "TARIF", "QT", "TVA", "UB", "DELAI",
"FAM1", "FAM1L", "FAM2", "FAM2L"
];
// 4. Trouver dynamiquement la ligne des en-têtes
const sourceValues = sourceSheet.getUsedRange().getValues();
let headerRowIndex = -1;
let sourceHeaders: (string | number)[] = [];
for (let i = 0; i < Math.min(20, sourceValues.length); i++) {
const row = sourceValues[i];
const normalizedRow = row.map(cell => String(cell).toUpperCase().trim());
// Vérifier si cette ligne contient au moins 3 des en-têtes essentiels
let matchCount = 0;
for (const col of essentialColumns) {
if (normalizedRow.includes(col)) {
matchCount++;
}
}
if (matchCount >= 3) {
headerRowIndex = i;
sourceHeaders = row;
console.log(`✅ Ligne d'en-tête trouvée à la ligne ${i + 1} avec ${matchCount} colonnes correspondantes`);
break;
}
}
if (headerRowIndex === -1) {
console.log("❌ Impossible de trouver la ligne d'en-tête");
return;
}
// 5. Mapper les colonnes
const colMapping: {[key: string]: number} = {};
sourceHeaders.forEach((header: string | number, index: number) => {
const headerStr = String(header).toUpperCase().trim();
if (essentialColumns.includes(headerStr)) {
colMapping[headerStr] = index;
}
});
// 6. Créer les en-têtes dans la feuille de travail (avec colonne TVA_POURCENT)
const workHeaders: string[] = [];
essentialColumns.forEach(col => {
if (colMapping[col] !== undefined) {
workHeaders.push(col);
}
});
// Ajouter la colonne calculée TVA_POURCENT
workHeaders.push("TVA_POURCENT");
if (workHeaders.length === 0) {
console.log("❌ Aucune colonne essentielle trouvée");
return;
}
// Écrire les en-têtes
const headerRange = workSheet.getRangeByIndexes(0, 0, 1, workHeaders.length);
headerRange.setValues([workHeaders]);
// 7. Fonctions de transformation
// Fonction de nettoyage de texte
function cleanText(text: string): string {
if (!text) return "";
return String(text)
.replace(/\s+/g, ' ') // Espaces multiples → 1 espace
.trim()
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
// Fonction de validation GTIN
function cleanGTIN(gtin: string): string {
const cleaned = String(gtin).replace(/\s/g, '').trim();
if (/^\d{8}$|^\d{12}$|^\d{13}$|^\d{14}$/.test(cleaned)) {
return cleaned;
}
return ""; // GTIN invalide → vide
}
// 8. Extraire et transformer les données
const workData: (string | number)[][] = [];
for (let i = headerRowIndex + 1; i < sourceValues.length; i++) {
const sourceRow = sourceValues[i];
// Vérifier si la ligne est vide
const isEmpty = sourceRow.every((cell: string | number) =>
cell === null || cell === undefined || String(cell).trim() === ""
);
if (isEmpty) continue;
const workRow: (string | number)[] = [];
let hasData = false;
// Traiter chaque colonne essentielle
essentialColumns.forEach(col => {
if (colMapping[col] !== undefined) {
let value: string | number = sourceRow[colMapping[col]] as string | number;
// Nettoyage selon le type de colonne
if (col.includes("LIBELLE")) {
value = cleanText(value.toString());
} else if (col === "GTIN") {
value = cleanGTIN(value.toString());
} else if (col === "TARIF") {
const numValue = Number(value);
value = !isNaN(numValue) ? parseFloat(numValue.toFixed(2)) : 0;
} else if (col === "TVA") {
// Garder le format décimal pour la colonne d'origine
const numValue = Number(value);
value = !isNaN(numValue) ? numValue : 0;
}
workRow.push(value !== null && value !== undefined ? value : "");
// Vérifier si cette cellule contient des données
if (value !== null && value !== undefined && String(value).trim() !== "") {
hasData = true;
}
} else {
workRow.push("");
}
});
// Ajouter la colonne TVA en pourcentage (calculée)
if (colMapping["TVA"] !== undefined) {
const tvaValue = sourceRow[colMapping["TVA"]];
const tvaNum = Number(tvaValue);
const tvaPourcent = !isNaN(tvaNum) ? tvaNum * 100 : 0;
workRow.push(tvaPourcent);
} else {
workRow.push(0); // Valeur par défaut si TVA non trouvée
}
if (hasData) {
workData.push(workRow);
}
}
// 9. Écrire les données dans la feuille de travail
if (workData.length > 0) {
console.log(`📊 Préparation de l'écriture de ${workData.length} lignes avec ${workHeaders.length} colonnes`);
// Vérifier que toutes les lignes ont le bon nombre de colonnes
for (let i = 0; i < workData.length; i++) {
if (workData[i].length !== workHeaders.length) {
console.log(`⚠️ Ajustement de la ligne ${i + 2} : ${workData[i].length} → ${workHeaders.length} colonnes`);
// Ajuster la ligne si nécessaire
while (workData[i].length < workHeaders.length) {
workData[i].push("");
}
while (workData[i].length > workHeaders.length) {
workData[i].pop();
}
}
}
// Écrire les données
const dataRange = workSheet.getRangeByIndexes(1, 0, workData.length, workHeaders.length);
dataRange.setValues(workData);
// Ajuster la largeur des colonnes pour une meilleure lisibilité
workSheet.getUsedRange().getFormat().autofitColumns();
console.log("✅ Données écrites avec succès");
} else {
console.log("ℹ️ Aucune donnée à extraire après les en-têtes");
}
console.log("✅ Pré-traitement Niveau 1 terminé !");
console.log(`📋 ${workHeaders.length} colonnes configurées (dont TVA_POURCENT calculée)`);
console.log(`📍 Données extraites à partir de la ligne ${headerRowIndex + 2}`);
// Afficher un aperçu des données transformées
if (workData.length > 0) {
console.log("👁️ Aperçu de la première ligne transformée :");
// Afficher quelques colonnes clés
const previewColumns = ["REFCIALE", "GTIN", "LIBELLE40", "TARIF", "TVA", "TVA_POURCENT"];
const previewData: string[] = [];
previewColumns.forEach(col => {
const headerIndex = workHeaders.indexOf(col);
if (headerIndex !== -1 && workData[0][headerIndex] !== undefined) {
let value = workData[0][headerIndex];
if (col === "TVA_POURCENT") {
value = `${value}%`;
} else if (col === "TARIF") {
value = `${value} €`;
}
previewData.push(`${col}: ${value}`);
}
});
console.log(previewData.join(" | "));
}
}✅ Avantages de ce script :
- ⏱️ Traite 5 000 produits en 15-20 secondes
- 🔒 Préserve le fichier source (travail sur feuille séparée)
- 🎯 Extrait uniquement les 16 colonnes essentielles
- ✨ Nettoie automatiquement libellés, GTIN, TVA
- 📊 Rapport détaillé dans la console
Traitement partiel intelligent : ne touchez que le nécessaire
Le concept de « traitement partiel intelligent » est au cœur d’une automatisation efficace des FAB-DIS. Plutôt que de traiter systématiquement toutes les colonnes, vous identifiez celles qui nécessitent réellement une intervention.
Matrice de décision : faut-il traiter cette colonne ?
| Question | Si OUI | Si NON |
|---|---|---|
| Cette colonne est-elle utilisée dans mon système ? | → Continuer l’analyse | → Ignorer |
| Les données sont-elles souvent mal formatées ? | → Nettoyer | → Copier telles quelles |
| Des calculs ou transformations sont-ils nécessaires ? | → Enrichir | → Copier telles quelles |
| La colonne doit-elle être validée (format, cohérence) ? | → Valider | → Copier telles quelles |
Exemple concret de traitement partiel
Sur un fichier FAB-DIS de 47 colonnes, voici une répartition typique :
REFCIALE, LIBELLE80, TARIF, TVA, GTIN, UB, FAM1, FAM2, QT, DELAI
MARQUE, DATETARIF, LIBELLE240, FAM1L, FAM2L, TARIFD
MKT1-5, GAMME, FONCTION, MUL, QMC, QMVT, UC, etc. (non utilisées)
Résultat : Au lieu de traiter 47 colonnes × 5 000 lignes = 235 000 cellules, vous traitez activement 10 colonnes × 5 000 = 50 000 cellules. Gain de temps : 78%.
Retour d’expérience (PME distribution matériel électrique, 25 personnes) :
« Avant l’automatisation du pré-traitement, nous passions 2 heures à préparer chaque FAB-DIS reçu (4 par semaine) : ouvrir le fichier, supprimer les colonnes inutiles, nettoyer les libellés, corriger les formats de prix, vérifier les GTIN… 8 heures par semaine de travail répétitif et fastidieux.
Avec le script de pré-traitement Niveau 2 d’AutoExcel, le process est : déposer le FAB-DIS dans OneDrive → 30 secondes plus tard, fichier prêt à l’emploi dans ‘Donnees_Travail’. Plus aucune manipulation manuelle. Le fichier source reste intact dans ‘Archives’ au cas où.
Gain mesuré : 7h30 par semaine, soit 390 heures par an. Notre responsable catalogue peut maintenant se concentrer sur l’analyse tarifaire et la stratégie commerciale au lieu de faire du copier-coller. »
FAQ : Questions fréquentes sur le pré-traitement FAB-DIS
Pour trois raisons critiques : (1) Traçabilité – vous devez pouvoir prouver que vos données viennent bien du fournisseur tel quel, sans modification, (2) Réversibilité – si une erreur de traitement se produit, vous pouvez repartir de zéro depuis la source, (3) Audit – en cas de litige commercial ou de contrôle fiscal, vous devez présenter le fichier original du fournisseur.
Le pré-traitement est la phase préparatoire qui inclut : extraction des colonnes utiles, création de la copie de travail, suppression des lignes vides, et mise en format exploitable. Le nettoyage est une des opérations du pré-traitement, qui consiste à corriger les formats (espaces, majuscules, caractères spéciaux). Le pré-traitement est plus large et englobe le nettoyage.
Minimum 3 ans, idéalement 5 ans. C’est la durée légale de conservation des documents commerciaux en France. Stockez-les dans un dossier « Archives » en lecture seule. Avec OneDrive/SharePoint, le coût de stockage est négligeable (100 Go = environ 500 fichiers FAB-DIS). En cas de litige avec un fournisseur ou un client, ces archives sont votre preuve.
Oui, absolument. Deux approches : (1) Script générique – un seul script qui détecte automatiquement la structure du FAB-DIS (noms de colonnes, blocs présents) et s’adapte, ou (2) Scripts spécialisés – un script par fournisseur si leurs structures sont très différentes. La première approche est plus maintenable, la seconde plus performante. AutoExcel peut créer les deux types selon vos besoins.
Oui. Office Scripts fonctionne avec des fichiers CSV ouverts dans Excel Online. Le workflow recommandé : (1) Convertir automatiquement le CSV en Excel (.xlsx) lors de l’upload sur OneDrive, (2) Exécuter le script de pré-traitement, (3) Ré-exporter en CSV si nécessaire pour l’import ERP. Power Automate peut orchestrer tout cela automatiquement.
Conclusion : du chaos à la maîtrise par le pré-traitement
Les fichiers FAB-DIS sont par nature complexes, denses et hétérogènes. Tenter de les exploiter directement sans pré-traitement, c’est s’exposer à des heures de travail manuel répétitif, des erreurs coûteuses et une perte de traçabilité dangereuse.
Le pré-traitement automatisé transforme radicalement cette réalité :
- 🔒 Sécurité totale : vos fichiers source restent intacts, en lecture seule, archivés
- ⏱️ Gain de temps massif : de 2 heures à 30 secondes par fichier
- 🎯 Traitement intelligent : ne travaillez que sur les 20% de colonnes réellement utiles
- 📊 Qualité garantie : nettoyage automatique, validation, détection d’anomalies
- 🔄 Workflow industriel : reproductible, traçable, auditable
Les 3 niveaux de pré-traitement (basique, intermédiaire, avancé) vous permettent de choisir le niveau d’automatisation adapté à votre maturité et vos besoins. Commencez par le Niveau 1 (extraction simple), puis montez progressivement en sophistication.
📊 ROI du pré-traitement automatisé : Pour une PME recevant 4 FAB-DIS par semaine, le temps de développement initial (20-40 heures) est amorti en 3 à 6 semaines. Sur une année, c’est 300 à 400 heures économisées, soit l’équivalent de 2 mois de travail d’une personne.
AutoExcel crée votre workflow de pré-traitement sur mesure
Nous analysons vos fichiers FAB-DIS, identifions vos colonnes critiques et créons un workflow automatisé complet :
- ✅ Archivage automatique des fichiers source (lecture seule)
- ✅ Création automatique des copies de travail horodatées
- ✅ Scripts de pré-traitement adaptés à vos besoins (Niveau 1, 2 ou 3)
- ✅ Rapports de qualité automatiques avec alertes
- ✅ Intégration Power Automate pour workflow 100% automatique
- ✅ Formation de vos équipes et documentation complète
Solution clé en main, opérationnelle en 2 semaines.
Demander une analyse gratuite de vos FAB-DISPour aller plus loin :
• FAB-DIS et automatisation : le guide ultime pour les TPE/PME
• Nettoyer et standardiser les libellés produits FAB-DIS automatiquement
• Vérifier l’intégrité d’un fichier FAB-DIS : doublons, GTIN manquants, incohérences

