Extraction et concaténation de texte de chaînes de caractères de longueur variable

Eiligh

XLDnaute Nouveau
Bonjour,

Je me permets de venir vers vous sur un petit problème que je ne parviens pas à résoudre.

Mes données sont réparties sur plusieurs (6) colonnes et sont de la forme x-x, où la longueur de chaque élément de part et d'autre de - est variable, et où, pour chaque ligne, ces données sont présentes a minima dans une colonne (les autres renvoient #N/A) et au maximum dans 2.
Je cherche à agréger ligne par ligne ces données en ne reprenant à chaque fois que la partie gauche de la première occurrence puis la partie droite de la dernière occurrence.

Avec des données de longueur fixe (22 caractères de part et d'autre du -) la formule suivante fonctionnait parfaitement :
Code:
=CONCATENATE((IF(ISTEXT(D2);(LEFT(D2;22));IF(ISTEXT(E2);(LEFT(E2;22));IF(ISTEXT(F2);(LEFT(F2;22));IF(ISTEXT(G2);(LEFT(G2;22));IF(ISTEXT(H2);(LEFT(H2;22));IF(ISTEXT(I2);(LEFT(I2;22));"")))))));"-";(IF(ISTEXT(I2);(RIGHT(I2;22));IF(ISTEXT(H2);(RIGHT(H2;22));IF(ISTEXT(G2);(RIGHT(G2;22));IF(ISTEXT(F2);(RIGHT(F2;22));IF(ISTEXT(E2);(RIGHT(E2;22));IF(ISTEXT(D2);(RIGHT(D2;22));""))))))))

Le format des données ayant changé et étant maintenant variable (x-x avec x variant entre 1 et 5 caractères), j'ai tenté la formule suivante :
=CONCATENATE((IF(ISTEXT(D2);(LEFT(D2;FIND("-";D2)-1));IF(ISTEXT(E2);(LEFT(E2;FIND("-";E2)-1));IF(ISTEXT(F2);(LEFT(F2;FIND("-";F2)-1));IF(ISTEXT(G2);(LEFT(G2;FIND("-";G2)-1));IF(ISTEXT(H2);(LEFT(H2;FIND("-";H2)-1));IF(ISTEXT(I2);(LEFT(I2;FIND("-";I2)-1));"")))))));"-";(IF(ISTEXT(I2);(RIGHT(I2;FIND("-";I2)-1));IF(ISTEXT(H2);(RIGHT(H2;FIND("-";H2)-1));IF(ISTEXT(G2);(RIGHT(G2;FIND("-";G2)-1));IF(ISTEXT(F2);(RIGHT(F2;FIND("-";F2)-1));IF(ISTEXT(E2);(RIGHT(E2;FIND("-";E2)-1));IF(ISTEXT(D2);(RIGHT(D2;FIND("-";D2)-1));""))))))))

Elle renvoie une erreur sur les deux éléments mis en gras qui ne sont pas identifiés comme des valeurs [num_chars] de LEFT et RIGHT (alors qu'ils le sont partout ailleurs dans la formule et que la formule fonctionne parfaitement jusqu'à ces deux éléments).

Je souhaiterais m'en tenir à une formule dans la mesure du possible, quelqu'un saurait-il m'aider ?
Je joins un fichier exemple.
 

Pièces jointes

  • Exemple.xls
    14 KB · Affichages: 67
  • Exemple.xls
    14 KB · Affichages: 66
  • Exemple.xls
    14 KB · Affichages: 67
Dernière édition:

piga25

XLDnaute Barbatruc
Re : Extraction et concaténation de texte de chaînes de caractères de longueur variab

Bonjour,

Si j'ai bien compris la demande, faire un essai avec ceci:
=CONCATENER(GAUCHE(CONCATENER(D2;E2;F2;G2;H2;I2);TROUVE("-";CONCATENER(D2;E2;F2;G2;H2;I2);1)-1);"-";DROITE(CONCATENER(D2;E2;F2;G2;H2;I2);NBCAR(CONCATENER(D2;E2;F2;G2;H2;I2))-TROUVE("-";CONCATENER(D2;E2;F2;G2;H2;I2);NBCAR(CONCATENER(D2;E2;F2;G2;H2;I2))/2)))
 

Eiligh

XLDnaute Nouveau
Re : Extraction et concaténation de texte de chaînes de caractères de longueur variab

Merci, cela fonctionne.
Mais, je rajoute un point au problème initial : contrairement au fichier d'exemple, mes colonnes sont alimentées par une précédente formule. Celles qui ne contiennent pas de données renvoient #N/A. Comment faire pour ne pas en tenir compte lors de l'agrégation ?

PS : ok trouvé en utilisant correctement IF(ISNA( dans les colonnes de données.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 337
Membres
102 865
dernier inscrit
FreyaSalander