Eclatement selon un code
L’objectif est de récupérer, dans les colonnes D à F, les montants selon le code comptable présent dans le titre de la colonne, en D1:F1.
La formule miracle, à entrer sous forme de formule matricielle – donc avec la combinaison [Ctrl]-[Maj]-[Entrée] – en D2:D9 est la suivante :
=index($B$2:$B$7;petite.valeur(si(D1=$A$2:$A$7;ligne($A$2:$A$7)-1);ligne($1:$10)))
On reproduit ensuite le bloc D2:D9 dans les colonnes E et F pour obtenir le résultat ci-dessus.
Pour mieux comprendre cette formule, il faut savoir que la partie petite.valeur (si(D1=$A$2:$A$7;ligne($A$2:$A$7)-1);ligne($1:$10)) de la formule est évaluée de la façon suivante : {1;4;6;#NOMBRE!;#NOMBRE!;#NOMBRE!;#NOMBRE!;#NOMBRE!;
#NOMBRE!;#NOMBRE!}.
Remarque 1 – On pourrait masquer les messages d’erreur par un format conditionnel mettant en police blanche toutes les cellules évaluées comme erreur, à l’aide de la formule =esterreur(D2)…
Remarque 2 – On pourrait éviter ces erreurs sans format conditionnel, mais au prix d’une formule nettement plus lourde : =si(ligne()-1<=nb(petite.valeur(si(H1=$A$2:$A$7; ligne ($A$2:$A$7)-1);ligne($1:$10)));index($B$2:$B$7;petite.valeur(si(H1=$A$2:$A$7;ligne($A$2:$A$7)-1);ligne ($1:$10)));"")