Problème STXT et TROUVE

Fermé
Keusti_001 Messages postés 29 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 7 février 2023 - 6 févr. 2023 à 12:43
Le Pingou Messages postés 12200 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 novembre 2024 - 7 févr. 2023 à 20:40

Bonjour à tous !

Dans une colonne (F), j'ai les valeurs ci-dessous qui reprennent entre () des dimensions que je souhaite extraire en case séparées.

7K170-L170 (630x1206)_

6P175-Y135 (823x929)_

5P175-Y135 (875x875)_

7K170-L170 (846x907)_

6P(e)145-L(b)170gr (1540x2210)_

6P(e)145-L(b)170gr (1160x1554)_

6P(e)145-L(b)170gr (1540x2210)_

6P(e)145-L(b)170gr (1430x1100)_

En colonne Q, via la formule ci-dessous, j'arrive à obtenir la 1e dimensions tel que recherchée

=STXT(F4;TROUVE("(";F4)+1;TROUVE("x";F4)-TROUVE("(";F4)-1)

En colonne S, avec la formule ci-dessous, j'obtiens la 2e dimensions : 

=STXT(F4;TROUVE("x";F4)+1;TROUVE(")";F4)-TROUVE("x";F4)-1)

Sauf que ces formules ne fonctionnent pas pour les 4 dernières cases de la colonne F, parce qu'il y a d'autres () dans la cases.

Connaissez-vous une formule (+ explication) qui permet de trouver la dimensions recherchées, aussi bien pour les 4 premieres cases que pour les 4 suivantes ?

D'avance, un tout grand merci pour votre aide ! :D

Keusti

PS : La sécu du boulot m'empêche tout accès à un hébergeur de fichier, donc je ne sais pas vous joindre d'exemple. J'espère cependant que ma demande est claire.


Windows / Chrome 109.0.0.0

4 réponses

jee pee Messages postés 40473 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 novembre 2024 9 428
Modifié le 6 févr. 2023 à 13:30

Bonjour,

Sans une vision exhaustive des valeurs possibles c'est toujours problématique.

Avec les valeurs indiquées on peut plutôt que "(" utiliser " (" et pour ")" prendre ")_" alors :

=STXT(F4;TROUVE(" (";F4)+2;TROUVE("x";F4)-TROUVE(" (";F4)-2)
=STXT(F4;TROUVE("x";F4)+1;TROUVE(")_";F4)-TROUVE("x";F4)-1)

1
Keusti_001 Messages postés 29 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 7 février 2023
Modifié le 7 févr. 2023 à 12:44

Un grand merci ! C'est tout simple, je n'avais pas pensé ! :)

En appliquant, je remarque cependant que ma colonne F (depuis laquelle je souhaite extaire les dimensions) n'a pas toujours la même structure.

Parfois, il n'y a pas de (), parfois il y en a plusieurs, et parfois il y a des caractères après les parenthèses (par exemple :" R_", "_", ...)

Voici les formats rencontrés : 

7K170-L170 (630x1206)_

2P175-P175 

3K170-L170 (396x1450) R_

3P175-Y135 (2400 x 1600)

2P175-P175 _

2P175-P175 (1600x1600) HP Calibration_

6P(e)145-L(b)170gr (1430x1100)_

Existe-t-il une formule permettant d'extraire les valeurs numériques entre la dernière "(" et le "x" ?

Je dis "numérique" car pour une des structures, il y a des espaces entre la dimension et le "x".

0
jee pee Messages postés 40473 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 novembre 2024 9 428 > Keusti_001 Messages postés 29 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 7 février 2023
Modifié le 7 févr. 2023 à 13:04

Tu vois, c'est presque toujours le cas que la situation présentée au départ n'est pas complète. Et alors nos propositions ne peuvent pas être bonnes.

Il te reste que tu peux utiliser " ("

si pas de " (", il faut rajouter dans la formule un SIERREUR()

pour transformer une chaine en numérique c'est CNUM(" 300 ")

et on pourrait aussi utiliser la recherche de la position de la dernière ( et pareil pour )

=CHERCHE("µ";SUBSTITUE(F4;"(";"µ";NBCAR(F4)-NBCAR(SUBSTITUE(F4;"(";""))))+1
0
Le Pingou Messages postés 12200 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 novembre 2024 1 450
6 févr. 2023 à 13:34

Bonjour,

Un possibilité pour la première dimension (à adapter pour la deuxième)

=STXT(DROITE(F1;12);TROUVE("(";DROITE(F1;12))+1;TROUVE("x";DROITE(F1;12))-TROUVE("(";DROITE(F1;12))-1)

1
Keusti_001 Messages postés 29 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 7 février 2023
Modifié le 7 févr. 2023 à 12:46

Hello Pingou !

Merci pour ton aide !

J'ai cependant remarqué que la structure des données que je cherchais a extraire variait plus que je ne le pensais.

Ci-dessous, les différentes structures rencontrées : 

7K170-L170 (630x1206)_

2P175-P175 

3K170-L170 (396x1450) R_

3P175-Y135 (2400 x 1600)

2P175-P175 _

2P175-P175 (1600x1600) HP Calibration_

6P(e)145-L(b)170gr (1430x1100)_

L'idéal serait donc une formule permettant d'extraire les caractères numériques écrits entre la dernière "(" et le "x".

Je précise "numérique" car dans une des structures, il y a des espaces entre les dimensions et le "x" :).

0
tontong Messages postés 2567 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 20 novembre 2024 1 059
7 févr. 2023 à 15:26

Bonjour,

Si les nombres cherchés sont toujours à 3 ou 4 chiffres:

=SI(ESTERREUR(TROUVE("x";A2));"";SUBSTITUE(STXT(A2;TROUVE("x";A2)-4;4);"(";"")*1)

=SI(ESTERREUR(TROUVE("x";A2));"";SUBSTITUE(STXT(A2;TROUVE("x";A2)+1;5);")";"")*1)

Comme l'a décrit jee pee il faut identifier les éléments qui se répètent toujours et les particularités, pour pouvoir établir ou optimiser des formules.

On pourrait envisager de supprimer les espaces, mais il faut savoir si ce sont des espaces ordinaires "Car(32)" ou des espaces insécables "Car(160)".

En bref : hors du périmètre complet la validité des formules est une loterie.

0
Le Pingou Messages postés 12200 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 novembre 2024 1 450
7 févr. 2023 à 20:40

Bonjour,

Une autre solution:

'Premier
=SIERREUR(CNUM(STXT(F1;TROUVE(" (";F1)+2;TROUVE("x";F1)-TROUVE(" (";F1)-2));"")
'deuxième
=SIERREUR(CNUM(STXT(SUBSTITUE(F1;" ";"";1);TROUVE("x";SUBSTITUE(F1;" ";"";1))+1;TROUVE(")";SUBSTITUE(F1;" ";"";1);TROUVE("x";SUBSTITUE(F1;" ";"";1);1))-TROUVE("x";SUBSTITUE(F1;" ";"";1))-1));"")

0