Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…