Rapport de message :*
 

Re: occurence d'une lettre

Titre du sujet : Re: occurence d'une lettre
par Mth le 26/09/2015 16:12:16

Bonjour plexxar, et bienvenue parmi nous,

 

Une approche avec la formule suivante, matricielle à valider par les 3 touches Ctrl Maj Enter, tu verras alors ta formule encadrée par des accolades dans la barre de formule comme ceci après cette validation:

{=SOMME(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="M";1))} :

 

=SOMME(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="M";1))

En décomposant cette formule, ta chaîne de caractère étant en cellule A1:

 

NBCAR(A1) de renvoie le nombre de caractères contenus dans la cellule A1, soit 23 dans ton exemple (un espace compte pour 1 caractère comme les autres)

 

LIGNE(INDIRECT("1:"&NBCAR(A1))) va simuler une matrice de 23 éléments comme ceci: {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23} soit autant que de caractères présents dans ta chaîne

 

La fonction STXT() permet d'extraire une chaine de caractères au sein d'une autre (voir ici) je m'en sert ici pour extraire les caractères 1 à 1, ainsi:

STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1) renvoie la matrice suivante:

{"0";"-";"M";"I";"-";"I";"-";"E";"M";"I";"-";"E";"N";"I";"-";"E";"M";"I";"J";"-";" ";"E";"M"}

 

Enfin, si la lettre rencontrée est un M, je compte 1, sinon rien.

SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="M";1) renvoie la matrice suivante:

{FAUX;FAUX;1;FAUX;FAUX;FAUX;FAUX;FAUX;1;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;1;FAUX;FAUX;FAUX;FAUX;FAUX;1}

 

Il ne reste qu'à faire la somme de la matrice avec la fonction SOMME(), dans ton exemple nous obtenons 4.

 

En espérant que cela pourra t'aider,

 

mth