La formule n'est presque jamais cassée. Elle pointe simplement vers la mauvaise colonne.
Un export QuickBooks peut changer l'ordre des colonnes d'une fois à l'autre. RECHERCHEX, elle, continue de renvoyer la colonne que vous lui avez indiquée — même si le champ qui vous intéresse a migré ailleurs. D'où ce résultat qui paraît aléatoire : la ligne est bien trouvée, mais la colonne renvoyée ne contient plus la valeur que vous vouliez.
Si RECHERCHEX échoue parce que les en-têtes de votre export QuickBooks se sont décalés, et que c'est exactement le désordre affiché à l'écran, inutile de retaper sans cesse des lettres de colonne. La solution : cesser de lier la formule à une position, et la lier à l'en-tête qui porte la donnée.
Avant de modifier quoi que ce soit, identifiez la panne que vous avez réellement.
À quoi ressemble la panne avant de toucher à la formule
| Ce que vous voyez à l'écran | Ce que stocke le fichier A | Ce que stocke le fichier B | Résultat de la correspondance |
|---|---|---|---|
La colonne Amount affiche maintenant Paid | Num en colonne A, Amount en colonne D, Status en colonne E | Num en colonne A, Status en colonne D, Amount en colonne E | RECHERCHEX renvoie toujours la colonne D : vous obtenez le texte du statut au lieu du montant |
La colonne Customer affiche maintenant des dates | Customer en colonne C, Txn Date en colonne F | Txn Date est passée en colonne C, Customer en colonne D | La ligne est bien trouvée, mais la matrice renvoyée pointe désormais vers une colonne de dates |
| Toutes les valeurs renvoyées sont vides | Memo en colonne E, avec du vrai texte | QuickBooks a inséré une colonne vide ou de sous-total en E et déplacé Memo en F | RECHERCHEX renvoie la colonne vide : le résultat est vide |
Toutes les lignes affichent #N/A après le nouvel export | La clé de recherche Num était en colonne A | QuickBooks a inséré Type en colonne A et déplacé Num en colonne B | La matrice de recherche scrute toujours la colonne A : elle ne trouve jamais le numéro de facture ou de transaction |
| Les chiffres sont bien des nombres, mais ils appartiennent au mauvais mois | Il n'existait qu'une seule colonne Amount | Un export comparatif a ajouté une autre colonne de montants avant la vraie | RECHERCHEX renvoie un nombre valide tiré de la mauvaise colonne — plus difficile à repérer qu'une erreur |
C'est ce qui rend ces décalages d'en-têtes QuickBooks dangereux. Ils ne provoquent pas toujours une panne bruyante. Très souvent, ils produisent une réponse plausible — et fausse.
QuickBooks a changé la structure de la feuille, pas la logique de RECHERCHEX
RECHERCHEX fait deux choses distinctes :
- Elle trouve la bonne ligne dans la matrice de recherche.
- Elle renvoie la valeur de la matrice de résultats que vous avez indiquée.
Si votre formule est la suivante :
=RECHERCHEX($A2,Export!$A:$A,Export!$D:$D)Excel ne raisonne pas en en-têtes. Il ne se souvient pas de ce que contenait la colonne D auparavant. Il pense seulement :
- chercher la valeur de
A2dans la colonne A ; - renvoyer la valeur de la colonne D sur la même ligne.
Voilà pourquoi la formule peut échouer sans la moindre erreur après un changement de disposition de l'export QuickBooks. Si Amount était en D et se trouve désormais en E, la formule fonctionne toujours exactement comme écrite. Elle renvoie D. Le problème, c'est que D ne contient plus Amount.
Les exports QuickBooks y sont particulièrement exposés, car un même rapport ne retombe pas toujours sur la même forme. Un nouveau champ personnalisé apparaît. Une période de comparaison ajoute des colonnes. Une variante de rapport change les regroupements. Un export bancaire sort avec d'autres libellés que le rapport du mois dernier. Dès que votre modèle de tableur repose sur des lettres de colonne fixes, chacun de ces changements suffit à le casser.
Vérifiez ces quatre points avant de tout réécrire
Ce premier examen tient en cinq minutes. Vous cherchez à localiser le changement de structure, pas à régler tout le classeur d'un coup.
1. Mettez les anciens et les nouveaux en-têtes côte à côte.
Copiez seulement la ligne d'en-tête et les premières lignes de données de l'ancien et du nouvel export dans une feuille de brouillon. Ne comparez pas tout le classeur d'abord. Vous cherchez :
- des colonnes insérées
- des colonnes supprimées
- des colonnes de montants en double
- des colonnes vides d'espacement
- des lignes de titre ou de rapport au-dessus des vrais en-têtes
La plupart des échecs de RECHERCHEX sautent aux yeux dès qu'on compare ces dix premières lignes.
2. Lisez la formule comme des adresses, pas comme du sens métier.
Si la formule indique Export!$A:$A et Export!$D:$D, examinez ces deux colonnes telles qu'elles sont dans le nouvel export. Oubliez ce que vous vouliez faire faire à la formule. Demandez-vous ce que ces adresses contiennent maintenant.
Cette seule étape répond souvent à la question plus vite que tout débogage de formule.
3. Vérifiez le type de la valeur renvoyée avec `TYPE()`.
Quand la mauvaise colonne contient quand même des données, le résultat peut sembler correct au premier coup d'œil. TYPE() vous dit si vous récupérez bien le type de valeur attendu.
=TYPE(RECHERCHEX($A2,Export!$A:$A,Export!$D:$D))TYPE() renvoie :
1pour les nombres2pour le texte
Si vous attendiez un statut en texte et que TYPE() renvoie 1, vous récupérez sans doute un montant ou un numéro de série de date. Si vous attendiez un nombre et que TYPE() renvoie 2, la matrice de résultats est peut-être tombée sur une colonne de client, de mémo ou de nom de compte.
4. Vérifiez si la colonne de recherche a bougé, pas seulement la colonne renvoyée.
On examine souvent la colonne renvoyée en premier, parce que c'est là que le résultat visible est faux. Mais si QuickBooks a aussi déplacé la colonne clé, la formule passe d'un résultat erroné à un #N/A généralisé. Et là, le correctif n'est pas le même.
Si toutes les lignes affichent #N/A alors que les références semblent toujours pointer vers les bons champs, la cause la plus probable n'est pas un décalage d'en-têtes mais une incompatibilité de format. C'est le schéma décrit dans formats CSV incompatibles, où une même valeur est stockée différemment de chaque côté.
La correction la plus rapide quand les noms d'en-têtes n'ont pas changé
Si la colonne a bougé mais que son libellé d'en-tête n'a pas changé, cessez d'utiliser des lettres de colonne brutes et convertissez le bloc d'export en tableau Excel.
Vous obtenez ainsi des références structurées, qui suivent les noms d'en-têtes au lieu des positions.
Supposons que l'export QuickBooks devienne un tableau nommé qbExport, avec Num comme colonne clé et Amount comme colonne renvoyée. Utilisez :
=RECHERCHEX($A2,qbExport[Num],qbExport[Amount])Peu importe désormais que Amount se trouve en colonne D, F ou J. Tant que le tableau possède un en-tête nommé Amount, la formule le suit.
C'est la correction la plus propre pour la version la plus courante du problème : pas de colonnes auxiliaires, et aucune reconstruction du classeur à chaque nouvel export.
Deux conditions, cependant :
- les vraies données doivent commencer à la ligne d'en-tête du tableau, pas au-dessus
- les noms d'en-têtes que vous référencez doivent rester stables
Si l'export contient des titres de rapport, des lignes vides ou des sous-totaux au-dessus du vrai tableau, ne convertissez en tableau que le bloc de données réel. Ne créez pas un tableau qui commence à la ligne 1 si la ligne 1 est le titre du rapport.
Quand les noms d'en-têtes changent aussi, repérez la colonne par sa ligne d'en-tête
Les références structurées règlent le déplacement des colonnes, mais pas le renommage des en-têtes ni les en-têtes en double. Si QuickBooks exporte Num un mois et No. le suivant, ou si le mode comparaison crée plusieurs colonnes de montants, la formule doit repérer la colonne réelle par sa ligne d'en-tête.
Si la colonne de recherche et la colonne renvoyée peuvent toutes deux bouger, voici un schéma durable :
=LET(
keyCol, EQUIVX("Num", qbExport[#En-têtes], 0),
valCol, EQUIVX("Amount", qbExport[#En-têtes], 0),
RECHERCHEX($A2, CHOISIRCOLS(qbExport, keyCol), CHOISIRCOLS(qbExport, valCol))
)Ce que fait cette formule :
EQUIVXtrouve la position actuelle de l'en-têteNumEQUIVXtrouve la position actuelle de l'en-têteAmountCHOISIRCOLSextrait ces colonnes réelles de l'export en coursRECHERCHEXtrouve la ligne à partir de la colonne clé réelle et renvoie la colonne de valeurs réelle
Cette formule résiste au déplacement des en-têtes, parce qu'elle n'est plus figée sur la colonne A ou D.
Si vous ne pouvez pas convertir l'export en tableau, appliquez la même logique sur une plage classique :
=LET(
keyCol, EQUIVX("Num", $A$1:$Z$1, 0),
valCol, EQUIVX("Amount", $A$1:$Z$1, 0),
RECHERCHEX($A2, INDEX($A$2:$Z$5000, 0, keyCol), INDEX($A$2:$Z$5000, 0, valCol))
)Cette version est utile quand l'export arrive sous forme de simple feuille et que la formule doit survivre à une disposition décalée avant que vous ayez le temps de repenser le fichier.
Deux cas où même cela ne vous sauvera pas :
Le texte de l'en-tête a vraiment changé.
Si l'export utilisait Amount le mois dernier et affiche maintenant Debit ou Payment Amount, Excel ne peut pas deviner que ces champs sont équivalents. Standardisez d'abord la copie exportée. Renommez la ligne d'en-tête de travail avec les noms qu'attendent vos formules, puis pointez les formules vers cette couche stable.
L'en-tête existe en plusieurs exemplaires.
EQUIVX("Amount", ...) renvoie la première correspondance. Si votre export QuickBooks contient Amount, Amount % ou deux colonnes de montants propres à des périodes différentes, la première trouvée n'est pas forcément la bonne. Dans ce cas, rendez les en-têtes de travail sans ambiguïté avant d'utiliser la formule. Current Amount et Prior Amount fonctionnent. Deux colonnes nommées toutes les deux Amount, non.
La panne vient souvent de la forme de l'export, au-dessus des en-têtes
Beaucoup de problèmes entre QuickBooks et Excel ressemblent à des problèmes de formule alors que ce sont des problèmes de mise en page du rapport.
Par exemple :
- l'export comporte des lignes de titre au-dessus du jeu de données
- des lignes de sous-total sont mêlées aux lignes de détail
- le rapport passe d'une présentation détaillée à une présentation groupée
- des colonnes de comparaison apparaissent pour une autre période
- des champs personnalisés s'intercalent entre les colonnes existantes
Dès lors, le classeur ne compare plus un tableau propre à un autre. Il compare des données métier à une mise en page de rapport.
Voilà pourquoi les fichiers de clôture mensuelle bâtis sur des exports QuickBooks finissent par accumuler des formules défensives, des colonnes masquées et des rustines manuelles. Chaque rustine corrige la disposition d'un mois, puis l'export suivant introduit une structure légèrement différente et le cycle recommence.
Si cela vous parle, le problème dépasse une seule RECHERCHEX. C'est le même schéma que dans pourquoi les exports bancaires de QuickBooks Online font échouer les recherches Excel : le fichier source change sans cesse de forme sous un classeur qui attend de la constance.
Une méthode qui empêche le problème de revenir le mois prochain
La vraie solution est un changement de méthode, pas une correction de formule ponctuelle.
Gardez l'export QuickBooks brut intact.
Enregistrez chaque export sur son propre onglet, exactement tel qu'il a été téléchargé. Évitez autant que possible de construire des formules directement sur la feuille brute : sinon, il devient impossible de voir ce qui a changé d'un export à l'autre.
Créez un seul tableau de travail aux en-têtes stables.
Dans un second onglet :
- supprimez les lignes qui ne sont pas des données
- ne gardez qu'une seule vraie ligne d'en-tête
- renommez les en-têtes de travail avec des noms stables que vous maîtrisez
- convertissez le bloc en tableau
Une fois cette couche en place, pointez chaque RECHERCHEX vers le tableau de travail, jamais vers l'export brut.
Faites un contrôle témoin avant de vous fier à l'ensemble du résultat.
Choisissez trois enregistrements que vous connaissez déjà bien. Après chaque nouvel export :
- vérifiez que la clé de recherche correspond toujours à la bonne ligne
- vérifiez que le champ renvoyé est toujours du type attendu, avec
TYPE() - vérifiez que la valeur elle-même est correcte sur ces lignes témoins
Ce contrôle prend moins de temps que de démêler tout un classeur une fois que les mauvais chiffres se sont déjà propagés dans les tableaux croisés, les synthèses ou les onglets de rapprochement.
Distinguez « formule fausse » et « fichier mal formé ».
Si la formule fonctionnait le mois dernier et que sa syntaxe n'a pas changé, partez du principe que c'est la forme du fichier qui a changé en premier. Ce réflexe fait gagner du temps : il vous envoie vers les en-têtes plutôt que dans une heure de chirurgie de formule.
Quand la tâche récurrente se résume à « télécharger deux exports, nettoyer les en-têtes, reconstruire la même recherche, tester les mêmes lignes témoins, puis expliquer les mêmes écarts », le tableur ne fait plus du travail de finance. Il fait de la réparation de fichiers à répétition.
C'est le moment où le problème cesse d'être RECHERCHEX pour devenir le coût de faire passer des exports instables dans un classeur qui attend des colonnes fixes.
