L'essentiel d'abord : le dernier chiffre de chaque code d'emplacement devrait être une clé de contrôle. J'ai vu exactement cette défaillance trois fois, et les trois fois se sont terminées de la même manière : rien n'a été volé, mais le système ne pouvait pas le retrouver. Un chiffre supplémentaire ne coûte presque rien et détecte la grande majorité de ces cas de stock « disparu ».
Le cas le plus récent s'est conclu il y a quelques mois. Un client de pièces automobiles dans l'est de la Chine, un nouveau DC d'environ 20,000 mètres carrés, trois mois après le go-live. Premier inventaire complet de mur à mur : plus de 2 millions de yuans de stock qui ne se rapprochaient pas. Rien de volé, rien de mal expédié — plus de 40 palettes avaient été rangées aux mauvais emplacements. L'emplacement B-12-03-4 avait été lu comme B-12-08-4 : le scan du cariste avait échoué à cause d'une étiquette sale, il l'avait saisi à la main, et le 3 était devenu 8. Dans le WMS, ces 40 palettes étaient « à » B-12-03-4 ; en réalité, elles se trouvaient à B-12-08-4. Pendant deux semaines entières, les ventes voyaient du stock à l'écran, les préparateurs ne le trouvaient pas au sol, le service client encaissait les plaintes des clients, et l'entrepôt encaissait celles des ventes. Au final, il a fallu deux personnes pendant cinq jours à ouvrir chaque emplacement pour les retrouver. Deux millions de yuans « disparus » pendant deux semaines — à cause d'un seul chiffre mal lu.
Le deuxième projet a fait encore plus mal. Début 2024, un entrepôt 3PL dans le sud de la Chine est passé à un fournisseur d'étiquettes moins cher. Les marges du nouveau modèle étaient décalées, et l'impression a été rognée de 2 millimètres à droite — exactement là où se trouvait la clé de contrôle. La moitié des étiquettes se scannaient comme des codes tronqués, le terrain est retombé sur la saisie manuelle sans clé de contrôle pour détecter les erreurs, et les taux d'erreurs de rangement ont explosé. Ce qu'ils ont économisé sur les étiquettes n'a pas couvert la main-d'œuvre pour retrouver une seule palette perdue. Deux projets, l'un mal lu par un humain, l'autre mal imprimé par un fournisseur — même cause racine : la conception du code ne laissait aux erreurs aucune chance d'être détectées.
Comment une clé de contrôle empêche cela
Toute l'idée en une phrase : ajouter un chiffre qui porte sa propre réponse, pour que le système puisse vérifier chaque saisie.
Prenons l'emplacement B12034 (chiffres uniquement, séparateurs retirés). Dans le WMS, nous calculons une clé de contrôle avec l'algorithme de Luhn — le même que celui des numéros de cartes bancaires — et l'emplacement devient B12034-7. Dès lors, chaque scan ou saisie manuelle est d'abord vérifié : le système peut-il recalculer ce 7 final à partir des chiffres précédents ? Sinon, arrêt net, erreur en rouge, la palette ne va jamais au mauvais alvéole.
Ce n'est pas de la magie. Je vous détaille le calcul, chaque étape est reproductible. Disons que les chiffres de l'emplacement sont 417203 :
- Ajoutez un zéro à la fin comme espace réservé : 4172030.
- En partant de la droite, doublez chaque 2e, 4e et 6e chiffre : le 3 devient 6, le 2 devient 4, le 1 devient 2. (Si le doublement donne 10 ou plus, additionnez les deux chiffres — 8 fois 2 font 16, donc prenez 1 plus 6 pour obtenir 7.)
- Additionnez le tout : 0 plus 6 plus 0 plus 4 plus 7 plus 2 plus 4 égale 23.
- La clé de contrôle est 10 moins le reste de 23 divisé par 10 — 10 moins 3, soit 7.
Code d'emplacement complet : 4172037. Maintenant le cariste saisit 417208 au lieu de 417203. Le système vérifie 4172087, le calcul ne donne pas 7, et l'écran affiche une erreur avant que la palette ne quitte le quai. Voilà toute l'astuce : un chiffre qui rend l'« erreur » détectable.

Quel algorithme ? N'inventez pas le vôtre — voici la comparaison :
| Algorithme | Fonctionnement | Détecte | Faiblesse | | Luhn | Double un chiffre sur deux, somme, mod 10 | Erreurs d'un seul chiffre, la plupart des transpositions adjacentes | Nécessite le support du WMS pour la logique de vérification | | Somme pondérée | Multiplie chaque chiffre par un poids fixe, mod 10 | Erreurs d'un seul chiffre | De mauvais poids signifient aucune protection | | Clé de contrôle GS1 | Positions paires/impaires multipliées par 3 et 1 | Erreurs d'un seul chiffre | Conçue pour les codes-barres produits ; l'emprunter pour les emplacements exige une cohérence sur tout le site |
Mon verdict : utilisez Luhn pour les codes d'emplacement, point final. Les « règles de contrôle maison » sont une défaillance que j'ai vue trois fois — à chaque fois, le consultant suivant n'a pas pu rétro-ingénierer l'ancienne règle, et le site a fini par ré-étiqueter tout l'entrepôt.
Le paramétrer dans votre WMS : quatre étapes, aucune optionnelle
- Verrouillez la règle de codage avant d'imprimer une seule étiquette. Trois phrases : le code d'emplacement égale zone-allée-niveau-alvéole plus une clé de contrôle ; les séparateurs sont purement d'affichage et exclus du calcul ; la clé de contrôle est toujours en dernier. Imprimez d'abord les étiquettes et définissez la règle après, et vous réimprimerez — je l'ai vu trois fois.
- Ajoutez deux champs aux données de référence des emplacements dans le WMS : la clé de contrôle et le nom de l'algorithme. Ne laissez pas la clé de contrôle uniquement sur l'étiquette imprimée ; le système a besoin d'un endroit pour la stocker et la configurer, sinon le jour où vous changez de fournisseur d'étiquettes sera le jour du désastre.
- Imposez la vérification à trois points de contact : le rangement, les mouvements et les ajustements d'inventaires tournants. Chaque scan ou emplacement saisi est vérifié ; les échecs sont bloqués et journalisés. Ne l'imposer qu'au rangement revient à ne pas l'imposer — dans mes projets, la plupart des erreurs de rangement se sont produites pendant les mouvements et les ajustements de comptage.
- Rattrapez l'historique avec un script : calculez les clés de contrôle de tous les emplacements existants en une fois et réimprimez en un seul lot. Ne faites pas calculer le terrain à la main. Pour un site greenfield de 30,000 emplacements, je lance le traitement par lots la veille du go-live.
Un arbitrage à bien réfléchir : blocage strict contre avertissement seul. Un blocage strict ralentit l'exploitation — chaque erreur immobilise un cariste pour une confirmation. L'avertissement seul est ignoré, ce qui revient à ne rien avoir. Ma répartition : blocage strict au rangement et aux mouvements (une erreur là-bas signifie une palette entière qui disparaît), avertissement plus revue le jour même sur les ajustements de comptage (le comptage est sensible au temps, et les erreurs remontent le jour même). L'un ou l'autre extrême est une erreur.
Check-list de la nuit du go-live : échouez à l'une de ces cinq, ne passez pas en production
- Les étiquettes sont-elles rognées ? La clé de contrôle est tout au bout — un support étroit ou une marge de modèle mal réglée en coupe la moitié et elle ne se scanne plus. Scannez 10 étiquettes une par une ; pas d'échantillonnage.
- La saisie du PDA est-elle verrouillée ? Certains PDA Android utilisent par défaut une méthode de saisie chinoise, et les chiffres pleine chasse contre demi-chasse sont des caractères différents pour le système — chaque vérification échoue. Verrouillez chaque appareil en saisie anglaise demi-chasse avant le go-live, et vérifiez-les un par un.
- Avez-vous conçu contre les erreurs de lecture ? 0 contre O, 1 contre I, 5 contre S — en hauteur, sous une mauvaise lumière, l'œil humain les confond constamment. Ma règle : chiffres uniquement dans les codes d'emplacement, une police à chasse fixe avec un zéro barré, et 0 et O n'apparaissent jamais sur la même étiquette.
- Quelqu'un lit-il le journal des blocages ? Bloquer des erreurs que personne ne relit, c'est du théâtre. Exportez le journal des blocages quotidiennement la première semaine — déterminez s'il s'agit de vraies erreurs ou d'une règle mal configurée — puis relâchez la deuxième semaine.
- Les emplacements historiques sont-ils rattrapés ? Mélanger anciens et nouveaux codes est un désastre. Rattrapez tout ou remplacez tout ; pas de porte dérobée pour les « codes historiques ».
Le constat contre-intuitif : ce n'est jamais la faute de l'opérateur
Sur plus de 30 go-lives, chaque fois que c'est arrivé, le premier réflexe de la direction a été « plus de formation » et « pénaliser les erreurs ». Mais mal lire une longue chaîne de chiffres, c'est tout simplement humain — aucune dose de « soyez prudent » ne corrige cela, et les amendes encore moins. Vous avez deux options : accepter que les humains se tromperont et laisser le système le détecter, ou parier que les humains ne se tromperont jamais et passer des jours chaque mois à chasser du fret « disparu ». La première coûte un chiffre ; la seconde a coûté à un client 2 millions de yuans au bilan. Vous pouvez faire ce calcul vous-même.
Une chose que vous pouvez faire demain : ouvrez les données de référence des emplacements de votre WMS ce soir et vérifiez s'il y a un champ de clé de contrôle. Sinon, imprimez la check-list en cinq points ci-dessus, collez-la au mur, et parcourez-la avant votre prochain go-live.
Par Lin Xiao, Consultant en implémentation WMS
Traduit de l'anglais. En cas de divergence, la version anglaise fait foi.










