Une entreprise remplace son classeur tarifaire par une application web. Les équipes importent les mêmes seuils et les mêmes prix, puis comparent quelques devis : les montants semblent corrects. À la première commande de 49 unités, le nouveau moteur refuse pourtant le tarif ou calcule un autre total. Les données ont été reprises ; le comportement de la formule ne l’a pas été.
Ce problème apparaît lorsque la règle dépend d’une recherche approximative, d’une borne incluse ou de l’application d’un prix à toute la quantité. Une correspondance exacte sur les seuils peut réussir les essais à 10 et 50 unités, puis échouer entre les deux. Une tarification progressive peut produire des montants plausibles tout en changeant le prix réellement proposé dans le classeur.
Le vrai enjeu consiste à séparer le résultat observé dans Excel de la politique que l’entreprise veut conserver dans son application. Vous allez reconstruire une règle de palier, comparer trois calculs sur six quantités et choisir les preuves nécessaires avant bascule. L’exercice utilise une grille fictive ; il sert à détecter un changement de sens sans lui attribuer un résultat commercial réel.
Dawap réalise ce travail dans ses missions de développement web sur mesure. La conception d’une application métier relie les calculs tarifaires, les droits et les devis à des règles décidées, versionnées et vérifiables par les équipes qui les utilisent.
Pour qui vérifier la formule avant de migrer une grille
Le besoin concerne les entreprises dont le classeur fixe un prix, une remise ou un montant repris dans un devis. Il concerne particulièrement une migration où les développeurs récupèrent une table de seuils sans recevoir une définition complète du calcul. La présence de colonnes nommées « quantité » et « prix » ne décrit pas encore la règle.
Identifier les faux succès de recette
Un premier signal faible apparaît lorsque les tests portent uniquement sur les seuils présents dans la grille. Un deuxième survient quand le développeur affirme que l’import est fidèle parce que toutes les cellules ont la même valeur. Ces contrôles peuvent être exacts alors que le moteur donne des résultats différents pour les quantités intermédiaires.
Le diagnostic cherche une commande juste sous le seuil, une commande exactement au seuil et une commande juste au-dessus. Il conserve la formule et la valeur obtenue dans le contexte du classeur. Le contrôle ne se limite pas au résultat d’un ancien PDF, qui pourrait provenir d’une correction manuelle ou d’une autre version du tarif.
Définir le périmètre de la règle testée
Une grille peut s’appliquer par produit, famille, compte, période ou contrat. Le palier peut porter sur une ligne ou sur un volume cumulé. L’exercice qui suit se limite à une seule référence, une commande, des quantités entières et un prix hors taxe. Ajouter des conditions non connues rendrait la comparaison impossible à interpréter.
La décision de remplacer Excel par une application métier traite le choix global de l’outil. La vérification tarifaire intervient après ce cadrage : elle examine une règle précise dont la transformation peut affecter les devis, même lorsque la migration technique est bien organisée.
Lire la recherche et la multiplication comme deux décisions
Le classeur fictif place les quantités commandées en colonne A et les seuils tarifaires dans H2:I4. La première colonne de cette grille contient 1, 10 et 50 ; la seconde contient respectivement 100 €, 95 € et 90 € HT. Les seuils sont triés dans l’ordre croissant et les valeurs sont numériques.
Identifier la correspondance approximative
La formule de prix est =RECHERCHEV(A2;$H$2:$I$4;2;VRAI). Dans ce scénario, elle retrouve le tarif du plus grand seuil qui ne dépasse pas la quantité. Une quantité de 49 utilise ainsi le seuil 10, alors qu’aucune ligne de grille ne contient exactement 49. La correspondance approximative représente ici une règle de palier.
La documentation Microsoft de RECHERCHEV précise le rôle de la correspondance approximative et du tri de la première colonne. Elle rappelle également que cette méthode s’applique par défaut lorsque le dernier argument est omis. Le mode doit donc être relevé explicitement pendant l’audit, plutôt que déduit du nom de la fonction.
Vérifier à quelle quantité le prix retenu s’applique
La formule de total est =A2*B2, où B2 contient le prix retrouvé. Elle applique le même prix unitaire à toute la quantité de la ligne. Elle ne répartit pas les premières unités dans une tranche à 100 €, les suivantes à 95 € et les dernières à 90 €.
Ces deux formules portent des décisions complémentaires : sélectionner un palier, puis appliquer son prix à toutes les unités. Migrer seulement la table ne conserve aucune des deux garanties. Le métier doit confirmer qu’elles décrivent la politique retenue, ou approuver un changement explicite avant que le backend ne produise les nouveaux devis.
Exercice corrigé : comparer six quantités et trois moteurs
Exercice entièrement fictif. Les quantités testées sont 0, 9, 10, 49, 50 et 51. Le calcul de référence recherche le seuil admissible puis multiplie son prix par la quantité entière. Le moteur exact ne retrouve que les quantités inscrites dans la grille. Le moteur progressif valorise les unités 1 à 9 à 100 €, les unités 10 à 49 à 95 €, puis les unités suivantes à 90 €.
La quantité zéro est placée sous le premier seuil. Microsoft indique qu’une recherche approximative sous la plus petite valeur retourne une erreur #N/A. Dans le scénario, cette erreur demeure un résultat observé à expliquer ; elle ne devient pas automatiquement un total nul accepté ni une règle métier universelle sur les commandes gratuites.
| Quantité | Palier appliqué à toute la ligne | Recherche exacte sur la grille | Tarification progressive |
|---|---|---|---|
| 0 | #N/A : aucun seuil admissible | #N/A : aucune ligne correspondante | Hors domaine : quantité non admise dans ce moteur de comparaison |
| 9 | 9 × 100 € = 900 € | #N/A : le seuil 9 n’existe pas | 9 × 100 € = 900 € |
| 10 | 10 × 95 € = 950 € | 10 × 95 € = 950 € | 9 × 100 € + 1 × 95 € = 995 € |
| 49 | 49 × 95 € = 4 655 € | #N/A : le seuil 49 n’existe pas | 9 × 100 € + 40 × 95 € = 4 700 € |
| 50 | 50 × 90 € = 4 500 € | 50 × 90 € = 4 500 € | 9 × 100 € + 40 × 95 € + 1 × 90 € = 4 790 € |
| 51 | 51 × 90 € = 4 590 € | #N/A : le seuil 51 n’existe pas | 9 × 100 € + 40 × 95 € + 2 × 90 € = 4 880 € |
Le corrigé démontre deux défauts de migration distincts. La recherche exacte conserve les essais à 10 et 50 mais échoue sur 9, 49 et 51. Le calcul progressif retrouve un montant pour les quantités positives, mais diverge dès 10. Un moteur qui semble plus tolérant peut donc modifier davantage de devis qu’un moteur qui affiche une erreur visible.
Comprendre pourquoi le total baisse entre 49 et 50
Le montant passe de 4 655 € à 4 500 € lorsque la quantité franchit le seuil 50. La baisse vaut 155 € HT parce que le nouveau tarif de 90 € s’applique aux cinquante unités. Le calcul reste cohérent avec les deux formules de référence ; sa conséquence commerciale doit ensuite être appréciée par l’autorité tarifaire.
Contre-intuitivement, imposer une croissance du total à chaque unité ajoutée peut altérer une grille dont la remise porte sur toute la ligne. Cette propriété convient au moteur progressif décrit dans l’exercice, mais elle n’est pas automatiquement un invariant du classeur. La recette doit vérifier l’intention avant de qualifier cette baisse de défaut à corriger.
Attribuer les écarts sans leur donner une valeur économique fictive
À 50 unités, le moteur progressif produit 4 790 € au lieu de 4 500 €, soit un écart de 290 € HT. Ce nombre mesure une différence entre deux politiques calculées. Il ne démontre ni une marge supplémentaire ni une perte client, car les coûts, les accords commerciaux et les ventes réalisées ne sont pas modélisés.
La finance et le responsable tarifaire peuvent décider de conserver la grille, de la remplacer ou de limiter son périmètre. Leur décision précise la date d’effet et les devis concernés. Le développeur ne choisit pas le calcul progressif parce qu’il paraît plus élégant ou parce qu’il élimine une baisse du total observée dans Excel.
Éprouver les bornes sans inventer le résultat d’un fichier dégradé
Le comportement de référence suppose une grille triée et des valeurs numériques cohérentes. Ces préconditions deviennent des contrôles dans l’application. Si elles ne sont pas établies dans le fichier source, l’audit conserve le défaut et demande un arbitrage ; il ne choisit pas un résultat Excel supposé pour une table incorrecte.
Tester ordre, unicité et domaine des seuils
La migration vérifie que les seuils sont croissants, qu’ils ne sont pas dupliqués et que leur portée est définie. Deux prix attachés au même seuil peuvent révéler un conflit de versions ou une condition client manquante. Le système ne prend pas arbitrairement la première ligne importée pour fermer cette ambiguïté.
Pour une grille non triée, la documentation Microsoft avertit du risque de résultat incorrect en recherche approximative. L’exercice ne prétend pas prédire ce résultat sans exécuter le fichier concerné. L’import place la grille en anomalie, puis le métier décide quelle version qualifiée peut servir de référence aux tests.
Traiter les quantités absentes, textuelles ou fractionnaires
Le domaine de la simulation admet uniquement des entiers strictement positifs. Une quantité manquante, textuelle ou fractionnaire reçoit une validation distincte. Le comportement historique de ces entrées reste à relever dans le classeur réel, avec ses éventuelles formules de conversion et sa gestion d’erreur.
Transformer « 10 unités » en nombre, tronquer 49,5 ou remplacer une erreur par zéro peut constituer une nouvelle règle. L’application doit documenter cette décision plutôt que la présenter comme une reprise fidèle. Un calcul correct sur les six nombres de l’exercice ne prouve pas encore les unités, les formats et les exceptions d’un tarif de production.
Séparer reproduction du classeur et règle tarifaire approuvée
Le classeur est une source de comportement observé. Il peut contenir une règle légitime, une erreur ou une adaptation devenue obsolète. La migration conserve ces trois possibilités jusqu’à la décision du responsable métier. L’égalité des résultats indique une fidélité de reproduction ; elle ne démontre pas la légitimité de tous les prix historiques.
Faire qualifier la baisse de total par le responsable tarifaire
Les cas 49 et 50 sont présentés avec leurs formules et leurs montants. Le responsable confirme si le prix par volume doit porter sur toutes les unités ou par tranches. Il examine la grille dans son contexte contractuel et économique. La décision ne doit pas être prise uniquement par la QA ou l’équipe backend.
L’extraction des règles métier tacites approfondit le passage d’un indice à une décision approuvée. Le test tarifaire fournit ici un contre-exemple précis : le choix d’un invariant de monotonie peut contredire la remise observée, même lorsque les prix importés sont identiques.
Versionner une correction sans réécrire les devis existants
Si l’entreprise change de politique, la nouvelle règle possède une version et une date d’effet. Les devis conservent la règle utilisée lors de leur émission, puis suivent le traitement commercial applicable lorsqu’ils doivent être modifiés. Une migration technique ne recalcule pas silencieusement tous les engagements selon le moteur nouvellement approuvé.
La table importée garde sa provenance et l’arbitrage associé. Le support distingue un montant ancien conforme à sa version d’un montant nouveau incorrect. Sans cette distinction, chaque différence ressemble à une régression alors que certaines correspondent à un changement métier accepté et d’autres à un défaut réel.
Porter le calcul et ses validations dans le backend
Le frontend peut annoncer le palier et prévisualiser le montant, mais le serveur recalculera la cotation à partir de la quantité, du contexte et de la version autorisée. Une valeur affichée par le navigateur ne devient pas le prix accepté sans cette vérification. Le résultat conserve la règle et le seuil effectivement retenus.
Construire une fonction tarifaire indépendante du formulaire
Dans une application Symfony, le calcul peut appartenir à un service de domaine recevant quantité et grille qualifiée. Le controller traduit la demande et restitue le résultat ; il ne porte pas sa propre copie des seuils. La base de données stocke les versions, tandis que les tests unitaires éprouvent les bornes sans dépendre du rendu HTML.
Le résultat inclut le prix unitaire, le total, le seuil et la version, ou un motif de refus explicite. Les entrées inconnues ne sont pas converties en prix nul. Cette sortie permet de comparer le backend au classeur et d’expliquer une cotation sans ouvrir le code ou chercher la formule dans une autre feuille.
Vérifier le parcours API et le droit de modifier une grille
Les tests d’intégration vérifient qu’une requête API ne peut pas imposer un prix différent de celui calculé pour le contexte enregistré. Le workflow distingue import d’une grille, validation métier et activation. Les droits d’administration technique ne donnent pas automatiquement l’autorité commerciale pour approuver une nouvelle politique.
La journalisation conserve la version importée, les anomalies, la décision et l’activation. Un worker chargé de préparer des cotations doit recevoir la version applicable à son lot. Le runbook explique comment suspendre les nouvelles cotations lorsque la grille manque, puis reprendre sans changer les prix déjà confirmés dans les dossiers existants.
Comparer les décisions avant de basculer les devis
La recette utilise les mêmes entrées pour le classeur de référence et le nouveau moteur. Elle compare résultat, refus, seuil et version. Une égalité sur le seul montant peut masquer une règle différente qui divergera à la prochaine quantité ; les essais intermédiaires restent donc indispensables.
Fermer les six cas puis élargir aux vraies exceptions
Le seuil de validation de la reproduction est zéro écart inexpliqué sur les six cas qualifiés. Si le métier approuve un changement, les sorties nouvelles sont documentées séparément et deviennent les attentes de la version future. La QA ne modifie pas le résultat attendu pour faire passer le test sans cette décision.
Les fixtures suivantes couvrent compte, devise, date, référence et unité selon le périmètre réel. Les exemples anonymisés de production ne sont retenus qu’après qualification de leurs corrections manuelles. La migration ne se satisfait pas de six nombres fictifs pour annoncer que toutes les grilles de l’entreprise sont couvertes.
Garder une comparaison sans produire deux engagements
Une phase de double calcul peut préparer le basculement sans émettre deux devis. L’ancien chemin reste autorité pour les dossiers concernés ; le nouveau compare ses sorties. Les divergences rejoignent une file avec entrée, version, cause présumée et propriétaire de la décision attendue.
Le seuil de suspension est le premier devis dont le prix change sans règle approuvée ou dont la source n’est plus identifiable. Le rollback concerne les nouvelles cotations et la version active ; il ne supprime ni ne réécrit un devis déjà transmis. Les corrections commerciales restent attribuées à leur responsable.
Plan d’action : qualifier les paliers avant le premier import tarifaire
Le chantier part d’un classeur de référence et d’une grille dont le métier connaît la portée. Les responsabilités sont réparties entre responsable tarifaire, produit, développeur et QA. Les dépendances incluent sources de quantité, unités et devis ; la journalisation relie chaque formule relevée à ses résultats observés.
Rassembler la règle, les cas et la décision de migration
Les entrées sont la formule, sa plage, son mode de recherche et les six quantités. Les sorties sont les montants et les erreurs observés, puis une décision de conservation ou de modification. L’instrumentation du nouveau calcul conserve la version et le seuil pour expliquer les différences pendant le pilote.
Le dossier tient sur la grille, une définition lisible du calcul et les fixtures approuvées. Il décrit aussi ce qui reste hors périmètre : cumul annuel, quantité fractionnaire ou mélange de devises lorsqu’ils n’ont pas été étudiés. Ces limites empêchent une recette étroite de devenir une promesse sur tout le catalogue.
- Reproduire : conserver le palier appliqué à toute la ligne lorsqu’il correspond à la politique qualifiée et à ses exemples approuvés.
- Différer : suspendre l’activation quand l’ordre des seuils, la portée client ou la source de quantité reste incertain.
- Changer explicitement : créer une nouvelle version lorsque le métier décide un tarif progressif ou une correction de la grille.
- Refuser : empêcher un import de remplacer les sorties attendues uniquement pour supprimer un écart de recette.
Préparer la reprise avant d’enlever le classeur du parcours
Le support sait retrouver la version d’une cotation et distinguer quantité invalide, grille absente et règle contradictoire. Le monitoring suit les refus par cause, les écarts de comparaison et les reprises manuelles. La base conserve les preuves nécessaires selon le périmètre et les droits définis.
Le passage en production exige une relecture métier des cas, une activation contrôlée et une procédure de repli exercée. Le coût caché de cette préparation est inférieur à une migration où chaque devis oblige ensuite l’expert Excel à recalculer le prix et à expliquer quelle politique le nouveau moteur a réellement appliquée.
Erreurs fréquentes dans la traduction d’un tarif Excel
Ces erreurs ne proviennent pas toutes de la copie des cellules. Elles changent la sélection du prix, son application ou son autorité. Le diagnostic compare ces décisions séparément afin de corriger la bonne couche, plutôt que de modifier toute la grille après le premier devis divergent.
- Tester seulement les seuils : valider 10 et 50 unités, puis ignorer les recherches intermédiaires qui distinguent exact et approximatif.
- Confondre volume et tranches : reprendre les mêmes prix avec un total progressif sans constater le changement de politique.
- Corriger la baisse de total sans accord : imposer une monotonie qui n’appartient pas à la règle qualifiée.
- Absorber une erreur par zéro : transformer une quantité hors domaine ou une grille absente en cotation gratuite.
- Déclarer tous les fichiers compatibles : généraliser la preuve d’une grille numérique triée à des classeurs possédant d’autres macros et exceptions.
- Recalculer l’historique : appliquer la nouvelle politique aux devis existants sans décision commerciale et sans version conservée.
Les reprises observées après bascule restent classées par cause. Une augmentation des prix contestés peut provenir d’une formule migrée incorrectement, d’une politique nouvelle mal expliquée ou d’un contexte client perdu. Un taux global d’erreur ne permet pas, seul, de choisir laquelle de ces situations corriger.
Guides complémentaires pour relier calcul, compte et devis
Le test de palier appartient à un parcours tarifaire plus large. Ces méthodes approfondissent le contexte du prix et la conservation des engagements. Elles permettent de garder l’exercice ciblé tout en préparant les dimensions que l’application devra prendre en charge après cette première règle.
Conserver les contextes de compte et les conditions négociées
Le socle multi-catalogues, multi-tarifs et multi-organisations traite les contextes qui déterminent la grille accessible. Un calcul de palier correct ne compense pas la sélection d’un tarif réservé à un autre compte.
Les grilles B2B par compte approfondissent priorités et conditions négociées. La baisse de total observée dans l’exercice reste à qualifier dans ce contexte, plutôt qu’à corriger par une règle générale de monotonie.
Rattacher la cotation à la version acceptée
Le workflow devis-commande avec prix et preuve conserve ce qui a été proposé puis accepté. Il évite qu’une nouvelle grille efface l’origine du montant au moment de convertir ou de reprendre un dossier.
La preuve de calcul nourrit cette filiation : quantité, contexte, grille, seuil et total. L’équipe peut alors expliquer une différence entre deux devis sans confondre variation de quantité, changement de règle et défaut de migration. La cotation devient un résultat traçable du produit métier.
Conclusion : migrer le sens du tarif, pas seulement ses cellules
Une grille importée à l’identique peut encore produire un tarif différent. La recherche approximative sélectionne un seuil admissible ; la multiplication applique son prix à toute la ligne. Une recherche exacte ou un calcul progressif reproduit certaines valeurs tout en changeant le comportement entre les bornes.
Les six quantités de l’exercice permettent de détecter ces différences. Le passage de 49 à 50 rend visible une baisse de total cohérente avec les formules observées. Cette conséquence doit être confirmée ou modifiée par le responsable tarifaire, puis inscrite dans une version que la recette peut vérifier.
La conception de votre application métier doit préserver cette décision dans le calcul serveur, les devis et les reprises. Les erreurs inconnues restent explicites, tandis qu’un changement de politique ne réécrit pas silencieusement les engagements existants.
Dawap vous accompagne avec son expertise en développement web sur mesure pour reconstruire ces règles, les éprouver avec les équipes et organiser la bascule. Le premier livrable utile relie une formule, ses cas frontières et une politique approuvée avant que l’import des données ne masque une transformation du tarif.