Sommer les caractères numériques d'une chaîne alphanumérique

Bonjour à toutes et à tous,

Je viens à vous pour faire appel à votre expertise excel.

J'ai un tableau qui se présente sous la forme suivante:

HSA 2 CP 3 A 2,6 HSD 5 HSA 5 7 Total HSA ligne 1

CP 5,7 HSA 3,6 HSD 5 A 31 B4 3,6 Total HSA ligne 2

10,6 Total HSA lignes 1 + 2

La chaine "HSA 2" est dans une seule et même cellule. J'ai donc, dans les cellules, toujours une séquence Lettres - Espace - Nombre décimal (ou rien).

Dans la 1ère ligne, à chaque fois que je trouve HSA, j'extraie le nombre qui suit et j'en fais la somme. La formule que j'utilise est la suivante:

=SI(NB.SI(A1;"*HSA*");SUBSTITUE(STXT(A1;MAX((STXT(A1;LIGNE($1:$30);1)>"9")*LIGNE($1:$30))+1;30);".";",")*1;0)+SI(NB.SI(B1;"*HSA*");SUBSTITUE(STXT(B1;MAX((STXT(B1;LIGNE($1:$30);1)>"9")*LIGNE($1:$30))+1;30);".";",")*1;0)+SI(NB.SI(C1;"*HSA*");SUBSTITUE(STXT(C1;MAX((STXT(C1;LIGNE($1:$30);1)>"9")*LIGNE($1:$30))+1;30);".";",")*1;0)+SI(NB.SI(D1;"*HSA*");SUBSTITUE(STXT(D1;MAX((STXT(D1;LIGNE($1:$30);1)>"9")*LIGNE($1:$30))+1;30);".";",")*1;0)+SI(NB.SI(E1;"*HSA*");SUBSTITUE(STXT(E1;MAX((STXT(E1;LIGNE($1:$30);1)>"9")*LIGNE($1:$30))+1;30);".";",")*1;0)

N'étant pas expert, je réplique la même formule sur toutes les cellules de la 1ère ligne parce que je n'arrive pas à trouver une seule formule qui traite la ligne entière (A1, B1, C1, etc).

Ma 1ère question est donc: sauriez-vous me dire comment je peux faire de manière plus courte et plus élégante pour extraire le nombre à chaque fois que je trouve "HSA" et sommer sur une ligne entière s'il vous plait ?

Aussi, j'aimerais faire la même chose sur 2 lignes. Existe-t-il une manière de faire sur 2 lignes (extraire le nombre à chaque fois que je trouve "HSA" et sommer sur 2 lignes) svp ?

Merci beaucoup pour votre aide !

Bien à vous,

17test.xlsx (10.15 Ko)

Une précision sur le sujet, chaque cellule suit la même séquence Lettres - Espace - Nombre (décimal ou pas). Je souhaite autant que possible ne pas utiliser de macros (voir fichier en PJ du post).

Cdlt,

Bonjour,

=SOMMEPROD(SI(GAUCHE(A1:E2;3)="HSA";--STXT(A1:E2;4;15);0))

formule matricielle à valider avec Shift+Ctrl+Entrée

Le séparateur décimal doit être celui défini sur le micro.

eric

Trop fort...

Merci bcp !

Là c'était une petite question.

Mais si s'en est une qui demande du travail attend 48h sans réponse avant de poster sur un autre site. Par respect, ça évite de bosser pour rien car la réponse est déjà ailleurs et de consacrer son temps libre à qq'un d'autre.

eric

bonjour

tulipe te propose

'=SOMMEPROD(ESTNUM(CHERCHE("hsa";A1:E1)*(CHERCHE({1;2;3;4;5;6;7;8;9;0};A1:E1)))*({1;2;3;4;5;6;7;8;9;0}))

mais pour les 2lignes d'un coup ?

cordialement

Bonsoir,

Merci à vous 2. La solution d'Eric permet de faire d'une pierre 2 coups.

Mais je retiens la formule de Tulipe car elle me servira dans un autre cas.

J'ai bien compris la règle des 48h et désolé.

Merci beaucoup pour votre aide !

Bonsoir @ tous,

Je me demande souvent pourquoi faire simple quand on peut faire compliqué

en G1,

=SOMME(SIERREUR(CNUM(SUBSTITUE(A1:E1;"HSA";));))

@ valider par Ctrl+Shift+Enter

@ tirer vers le bas

@ + +

Merci bcp ! D'une grande aide toutes ces réponses

Cdlt,

Rechercher des sujets similaires à "sommer caracteres numeriques chaine alphanumerique"