Je pense que le problème ici est que la suggestion donnée dans ce lien pour traiter les résultats des formules dans les lignes au-delà du nombre de retours attendus est simplement d'envelopper la formule dans une sorte de clause IFERROR.
Toutefois, cette configuration est extrêmement inefficace, en particulier si l'ensemble de données en question est dynamique et potentiellement en expansion.
Le fait est que, si vous avez une installation telle que :
\=IFERROR([ une_grande_formule_réseau ],"")
qui est destiné à être copié sur un nombre suffisant de lignes de manière à encapsuler tous les retours souhaités, vous serez alors confronté à deux choix.
Tout d'abord, vous pouvez effectuer un calcul pour déterminer précisément le nombre de déclarations de ce type que vous aurez à un moment donné, puis faire glisser cette formule sur ce nombre de lignes. Évidemment, ce n'est pas idéal, et encore moins si vous avez, comme je l'ai dit, un ensemble de données qui change de façon dynamique.
Deuxièmement, nous pouvons copier les formules sur un nombre arbitrairement grand de lignes, de sorte que nous sommes assurés de couvrir tous les rendements possibles, même si notre ensemble de données s'élargit à l'avenir, et nous n'avons donc pas à nous en préoccuper à nouveau.
Il est évident que cette deuxième méthode est préférable dans la pratique. Le problème avec la construction IFERROR (encore pire si vous êtes en 2003 ou avant et que vous devez utiliser une clause IF(ISERROR) répétée) est que, dans les lignes où la formule est copiée au-delà de ce qui est effectivement nécessaire, il n'y a rien pour empêcher la formule de tableau volumineuse et lourde en ressources de calculer inutilement.
Le fait est que, dans la construction ci-dessus, même dans les lignes au-delà de celle contenant notre dernier rendement attendu, Excel doit encore dépenser toutes les ressources pour calculer la partie de la formule du tableau avant de pouvoir décider par lui-même s'il s'agit en fait d'une erreur ou non.
Bien, bien mieux que cette approche IFERROR oiseuse - qui est malheureusement recommandée de manière presque omniprésente pour cette configuration dans les diverses sources sur Internet - est, comme James le fait remarquer, d'utiliser une seule cellule "d'aide" pour déterminer d'abord le nombre de lignes que l'on s'attend à avoir en retour, puis d'y faire référence dans la formule.
Ainsi, par exemple, si les données affichées se trouvent dans A1:C10 (avec les en-têtes à la ligne 1) et que nous mettons par exemple NN dans E1 et OUT dans F1, nous commencerons par saisir une formule unique, hors tableau, dans G1 par exemple :
\=SUMPRODUCT(0+(A2:A10=E1),0+(B2:B10=F1))
La **formule du tableau**** dans notre première cellule de choix serait alors :
\=IF(ROWS($1:1)>$G$1,"",INDEX($C$2:$C$10,SMALL(IF($A$2:$A$10=$E$1,IF($B$2:$B$10=$F$1,ROW($C$2:$C$10)-MIN(ROW($C$2:$C$10)))+1)),ROWS($1:1))))
et copié vers le bas si nécessaire.
Certes, il reste à savoir jusqu'où copier cette formule. Et même si nous avons mis en place un calcul pour déterminer le nombre de lignes requis, nous ne voulons toujours pas avoir à réajuster manuellement le nombre de cellules contenant les formules chaque fois que nous voulons mettre à jour les résultats. Il doit s'agir d'un travail initial unique.
Je ne recommanderais certainement pas de copier jusqu'à la fin de la feuille de calcul. Toutefois, si l'on peut choisir une limite supérieure suffisamment large, le fait de se retrouver avec plusieurs milliers de cellules superflues contenant des formules ne devrait pas avoir une grande incidence sur les performances. La raison en est qu'ici, la clause initiale, et la grande différence entre cette configuration et l'approche IFERROR "paresseuse", est la suivante :
\=IF(ROWS($1:1)>$G$1,""
signifie que, dans les lignes qui dépassent le nombre de retours prévu, la clause IF renvoie VRAI et un blanc est donc renvoyé. L'avantage de la fonction IF est que, si la clause qui lui est transmise est VRAIE, la partie FAUSSE (ici, une formule de tableau volumineuse et gourmande en ressources) n'est même pas prise en compte dans le calcul.
Ce n'est pas du tout le cas de la version IFERROR, qui continue à tourner sans se soucier du fait que ses calculs sont inutiles et représentent une charge pour les ressources.
Salutations
**Les formules de tableau ne sont pas saisies de la même manière que les formules "standard". Au lieu d'appuyer simplement sur ENTRÉE, vous devez d'abord maintenir les touches CTRL et SHIFT enfoncées, puis appuyer sur ENTRÉE. Si vous l'avez fait correctement, vous remarquerez qu'Excel place des accolades {} autour de la formule (mais n'essayez pas de les insérer manuellement vous-même).