Bonsoir Tom,
Merci pour l'appréciation.
En fait j'utilisais cette technique bien avant de connaître les formules matricielles.
Elle permet, en multipliant les colonnes techniques, de pratiquement tout paramétrer pour tester une base de données et en extraire les lignes désirées.
Je l'ai mise au point pour résoudre un défi particulièrement complexe où un dirigeant m'avait demandé de pouvoir analyser son signalétique articles (+- 9.000 articles) en tenant compte de multiples critères tels que Type d'activités ; Familles produits ; Fournisseurs ; chiffres d'affaires etc... J'ai pu réaliser la chose en créant une série de colonnes techniques qui adaptait le tableau d'analyse en fonction des critères demandés par l'utilisateur.
Quand j'ai appris les formules matricielles, je me suis dit que ma technique était à mettre à la poubelle ou en tous cas au musée.
Toutefois quand des cas de volumes importants m'ont été soumis, je me suis aperçu que les formules matricielles demandaient un temps fou à Excel et que, finalement, ma procédure, au premier abord lourde à mettre en place en utilisant des colonnes techniques (surtout qu'au départ - je te parle d'il y a déjà une dizaine d'années - je ne maîtrisais pas encore la technique de la recherche par INDEX et EQUIV. J'utilisais à l'époque uniquement la RECHERCHEV ce qui m'obligeait à mettre les colonnes techniques devant les colonnes des tableaux) était, finalement, beaucoup plus économique en temps d'exécution.
C'est tout à fait le cas dans le tableau de xam26.
Pour répondre à ta demande, la fonction ESTNA sert à tester si la fonction qu'elle teste donne comme réponse le vilain #NA. Elle répond par FAUX ou VRAI en fonction que l'opération réussit ou pas. Dans notre cas :
SI(ESTNA(RECHERCHEV($A3;$A$1:$A2;1;FAUX))=VRAI;1;0)
Le but de la formule est d'ajouter 1 ou 0 au total de la ligne précédente si la RECHERCHEV ne trouve pas A$3 dans la plage (il s'agit d'éliminer les doublons donc la formule teste la plage évolutive se trouvant au-dessus de la cellule testée ($A$1:$A2 - pas $ devant le 2 donc à chaque ligne l'adresse de la plage augmente de 1)..
Si la recherche ne trouve pas, elle génère un #NA et la fonction ESTNA va détecter cet #NA et générer VRAI donc j'augmente de 1. Si elle trouve (donc il y a au moins doublon), elle va générer FAUX et donc on augmente de 0.
CQFD....
J'espère que j'ai été clair.
A bientôt
Chris