Monsieur Excel
Pour tout savoir faire sur Excel !

16 novembre 2012

Trouver la énième occurrence


Dans l’article « Trouver la seconde occurrence » du 24 mai 2007, nous avons montré une solution pour trouver dans un vecteur la position de la seconde ou de la troisième occurrence d’une valeur ou d’un texte.

Quelques jours plus tard, avec l’article « Où est la dernière occurrence ? » du 28 mai 2007, nous avons montré comment trouver la toute dernière occurrence.

Dans le premier cas, chaque position était identifiée à partir de la position de l’occurrence précédente avec des formules directes. Dans le second cas, il fallait utiliser une formule matricielle.


Dans l’exemple ci-dessus, nous avons entré la formule suivante en C1, qui a été ensuite recopiée vers le bas : =sierreur(petite.valeur(si($A$1:$A$20=$B$1;ligne($A$1:$A$20);"");ligne());"")

C’est une formule matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée].

Remarque 1 – Comme nous l’avons dit dans l’article précédent, si nous utilisons Excel 2003 ou une version antérieure, nous serons forcés de remplacer sierreur(…) par si(esterreur(…) ;… ;…) en dupliquant de fait la formule entière.

Remarque 2 –  Il y a bien entendu d’autres solutions possibles, par exemple, en version plus longue mais compatible Excel 2003 : =si(ligne()<=nb.si(A:A; $B$1);petite.valeur(si($A$1:$A$20=$B$1;ligne($A$1:$A$20);"");ligne());"")

2 Commentaire(s):

  • Cette formule est valable tant que je reste sur la ligne 1 , même si je déplace toutes les données (colonne A B et C , lignes 1 à 20) en bloc.
    Mais si je déplace le bloc sur une autre ligne la formule ne fonctionne plus ????

    By Anonymous Anonyme, sur 5:41 PM  

  • Dans ce cas, il faut adapter la formule proposée puisqu'elle est en effet construite sur le fait que l'on démarre en ligne 1.

    Il faudra donc remplacer le deux références à ligne() par des références adaptées à la situation...

    By Blogger Hervé Thiriez, sur 10:24 AM  

Enregistrer un commentaire

<< Accueil