Microsoft 365 Extraire chaine qui se répète

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 !

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 !
 
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

Dernière édition:
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:
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

- 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

Retour