Extraction milieu d'une chaine à taille variable

wukodlak

XLDnaute Nouveau
bonjour,

je cherche à extraire d'une chaine de caractère des nombres à des positions bien particulières.
Suite à cette extraction une somme est générée.

ID | Chaine de car | data 1 | data 2 | data 3 | data 1 convertie en nombre | data 2 convertie en nombre | data 3 convertie en nombre
1 ...
2 ...
3 ...
_________________ somme des nombres de chaque colonne convertie

Le but obtenir la somme de chaque type.
J'y suis presque arrivé mais dès que la chaîne change de taille, nombre oscillant entre 0 et éventuellement plusieurs millions, je me retrouve à devoir reprendre à la main le calcul du nombre de décalage.

exemple de chaines (colonne B) :
7 unités de métal, 2 unités de cristal et 2 unités de deutérium.
91.877 unités de métal, 38.002 unités de cristal et 21.112 unités de deutérium.
991.877 unités de métal, 398.002 unités de cristal et 921.112 unités de deutérium.

Extraction des nombres (colonne C,D,E)
Pour extraire le 1 nombre j'utilise : =SI($B2<>"";STXT($B2;1;CHERCHE(" unités de métal, ";$B2;1));"")
Pour extraire le second : =SI($B2<>"";STXT($B2;CHERCHE("métal,";$B2;1)+7;CHERCHE("cristal";$B2;1)-36);"")
Pour extraire le troisième : =SI($B2<>"";STXT($B2;CHERCHE("cristal";$B2;1)+11;CHERCHE("cristal";$B2;1)-36);"")


Je convertie (colonne F,G,H)
Je convertie le 1er : =CNUM(SUBSTITUE($C2;".";""))
Je convertie le 2eme : =CNUM(SUBSTITUE($D2;".";""))
Je convertie le 3eme : =CNUM(SUBSTITUE($E2;".";""))

Et je fais la somme des élements via une somme classique : =SOMME(F2:F30)


Quelqu'un aurait il une idée du comment utiliser un système plus générique ?
Par avance merci à vous,
 
Dernière édition:

wukodlak

XLDnaute Nouveau
Re : Extraction milieu d'une chaine à taille variable

Peut être existe t il un système pour gérer la taille dynamique de la chaîne de caractère.

j'ai regardé du côté de gauche() / droite() aussi mais ce n'est pas ce qui semble me poser souci. en fait le fait d'ajouter ou de soustraire un nombre de décalage dans le recherche() n'est pas fiable
 

st007

XLDnaute Barbatruc
Re : Extraction milieu d'une chaine à taille variable

Bonjour,
Code:
=CNUM(GAUCHE(B2;TROUVE("unités";B2)-2))

pour extraire le premier nombre, et sommer
Code:
=CNUM(GAUCHE(DROITE(B2;NBCAR(B2)-TROUVE("et";B2)-1);NBCAR(DROITE(B2;NBCAR(B2)-TROUVE("et";B2)-1))-21))
pour le dernier
 

wukodlak

XLDnaute Nouveau
Re : Extraction milieu d'une chaine à taille variable

Merci ST007,

j'ai pu reconstituer la formule pour extraire la partie centrale grâce à tes formules,

Code:
=CNUM(SUBSTITUE(GAUCHE(DROITE(B2;NBCAR(B2)-TROUVE("l,";B2)-1);NBCAR(DROITE(B2;NBCAR(B2)-TROUVE("l,";B2)-1))-NBCAR(DROITE(B2;NBCAR(B2)-TROUVE("unités de cristal";B2)+2)));".";""))

la taille de la fin étant variable j'ai adapté le "-21" avec une taille dynamique la formule calcul la taille qui suit le nombre centrale.
 

Discussions similaires

Statistiques des forums

Discussions
312 381
Messages
2 087 823
Membres
103 666
dernier inscrit
ValdeTriDi