Extraction milieu d'une chaine à taille variable

  • Initiateur de la discussion Initiateur de la discussion wukodlak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
873
Retour