Audit du comportement : la formule actuelle répète deux fois exactement la même recherche, mais ne respecte pas la règle indiquée pour les identifiants inconnus. Son XLOOKUP renvoie 0 lorsqu’aucune clé n’est trouvée, puis la comparaison externe traite cette valeur comme un prix nul légitime. Une formule LET préservant le comportement conserverait ce défaut ; la correction doit donc être signalée séparément.
Formule LET corrigée pour H2 : =IF(B2="","",LET(productId,B2,quantity,E2,unitPrice,XLOOKUP(productId,Products!$A$2:$A$2000,Products!$D$2:$D$2000,NA(),0),IFERROR(IF(unitPrice>0,ROUND(quantity*unitPrice,2),0),"À vérifier"))). productId et quantity documentent les entrées relatives de la ligne ; unitPrice effectue une seule recherche exacte dans les plages sources fixes. NA() garantit qu’une clé inconnue parvient à IFERROR, tandis qu’un véritable zéro numérique continue de renvoyer 0. La modification intentionnelle du comportement concerne l’identifiant inconnu : 0 → À vérifier. Le comportement des cellules vides, des véritables zéros, de l’arrondi et des erreurs d’entrée est préservé.
Compatibilité : formule valide dans les environnements Microsoft 365 indiqués ; ne conserver une version corrigée sans LET que si un futur destinataire ne prend pas LET en charge. Les performances peuvent s’améliorer, puisqu’une seule recherche remplace les deux recherches de chaque ligne non vide, mais aucun pourcentage d’amélioration ne peut être affirmé sans mesurer le classeur.
Tests d’équivalence et de correction : P-10 ×3 → 37.50 dans l’ancienne version corrigée et la version LET ; P-FREE ×2 → 0 ; P-99 → À vérifier (correction délibérée) ; identifiant vide → cellule vide sans recherche ; quantité « three » avec un prix positif valide → À vérifier ; la copie vers H3 remplace productId/quantity par B3/E3 tandis que les plages Products restent fixes. Vérifier également séparément les identifiants de produit en double avant de faire confiance à une recherche à résultat unique.