Microsoft 365 Extraire chaine qui se répète

Amanite

XLDnaute Nouveau
Bonjour à tous.

J'ai beau chercher, je ne trouve pas comment extraire - en n'en prenant qu'une de chaque - des chaines qui se répètent dans UNE seule et même cellule.

Un exemple sera plus clair : j'ai une cellule contenant cette chaine de caractère : PR-PR-PR-PR-CM-CM-ST-ST-ST-

Ce que j'aimerais, c'est de réduire cette chaîne à UNE seule occurrence de chaque répétition. Et donc : PR-CM-ST- (avec ou sans les tirets, c'est égal).

LA 2ème étape serait d'extraire d'une manière ou d'une autre la quantité de chaque référence, du genre : 4PR-2CM-3ST- (avec ou sans tirets) dans une chaine ou dans des cellules séparées). Le mieux pour exploiter ces données ensuite serait sans doute 6 cellules séparées : PR 4 CM 2 ST 3

Ma seule contrainte est que tout doit rester sur la même ligne, car l'opération se répète ensuite à chaque ligne avec de nouvelles références.

Je n'ai pas encore de fichier construit à vous montrer hélas, je veux d'abord voir si je peux résoudre ce problème.

Merci beaucoup !
 

ALS35

XLDnaute Impliqué
Bonjour à tous,
Des propositions à tester pour les trois étapes, avec le texte en A1 (pour Excel 365) :
1)
VB:
=CONCAT(UNIQUE(FRACTIONNER.TEXTE(A1;"-";;1);1)&" ")
2)
Code:
=LET(t;FRACTIONNER.TEXTE(A1;"-";;1);u;UNIQUE(t;1);n;CONCAT(BYCOL(u;LAMBDA(p;NBVAL(FILTRE(t;t=p))&p))&" ");n)
3)
Code:
=LET(t;FRACTIONNER.TEXTE(A1;"-";;1);u;UNIQUE(t;1);n;BYCOL(u;LAMBDA(p;NBVAL(FILTRE(t;t=p))));DANSLIGNE(ASSEMB.V(u;n);;1))

(@danielco, UNIQUE peut travailler en ligne)

Cordialement

Edit : je rajoute un fichier
 

Pièces jointes

  • Extraire Chaine.xlsx
    17.1 KB · Affichages: 0
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @crocrocro ;),
Bonjour le fil,
@Amanite n'a pas indiqué quelle était sa version d'Excel.
Pas sûr qu les formules proposées qui me semblent être Office 365 soient disponibles sur sa version, çà ne l'est pas sur Excel 2016 :(
Si, si Amanite a indiqué la version d'Excel : O365

1731939910684.png
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :) ,

Recopier les formules des cellules en B2, C2 et D2 vers le bas.
en B2 : =JOINDRE.TEXTE("-";VRAI; UNIQUE(FRACTIONNER.TEXTE(A2;"-");VRAI))

en C2 (pour un résultat concaténé) : =LET(Sour; "-"&SUBSTITUE(A2;"-";"--")&"-";Uniq;UNIQUE(FRACTIONNER.TEXTE(A2;;"-";VRAI));Nbre;(NBCAR(Sour)-NBCAR(SUBSTITUE(Sour;"-" & Uniq & "-";"")))/(2+NBCAR(Uniq));JOINDRE.TEXTE(", ";VRAI;Uniq & " " & Nbre))

en D2 pour un résultat par cellule : =LET(Sour; "-"&SUBSTITUE(A2;"-";"--")&"-";Uniq;UNIQUE(FRACTIONNER.TEXTE(A2;;"-";VRAI));Nbre;(NBCAR(Sour)-NBCAR(SUBSTITUE(Sour;"-" & Uniq & "-";"")))/(2+NBCAR(Uniq));TRANSPOSE(Uniq & " " & Nbre))
 

Pièces jointes

  • Amanite- Compter- O365- v1.xlsx
    11.3 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
314 669
Messages
2 111 757
Membres
111 288
dernier inscrit
kr1997