Microsoft 365 Extraire les données d'une cellule entre 2 occurrences et sans doublons

Tidjyphenom

XLDnaute Nouveau
Bonjour, je m'y connais pas vraiment sur Excel et les tableurs plus généralement. Alors je fais appel à votre aimable aide.
Je dispose d'une colonne A ayant des données de ce type :

------------------------------------------------------------------------------------------------------------------------------------------------
Categorie 1|Categorie 2|Categorie 3|Categorie 3 > Sous-categorie 3-1|Categorie 4 > Sous-categorie 4-1 > Sous-categorie 4-1-1
------------------------------------------------------------------------------------------------------------------------------------------------

Sur ces lignes je souhaite récupérer le nom de chaque catégorie mais sans doublon et toujours séparé par des pipe ( | ) pour finalement obtenir le résultat suivant :

-------------------------------------------------------------------------------------------
Categorie 1|Categorie 2|Categorie 3|Categorie 4|Categorie 4-1|Categorie 4-1-1
-------------------------------------------------------------------------------------------

J'ai tenté différentes formules mais pour l'instant la seule chose que je réussi à faire est de récupérer la catégorie à droite de la dernière occurence du caractère ">" via cette formule :
=SUPPRESPACE(DROITE(A2;NBCAR(A2)-TROUVE("#";SUBSTITUE(A2;">";"#";NBCAR(A2)-NBCAR(SUBSTITUE(A2;">";""))))))

J'utilise Excel 365 en français donc le nom des formules est en français mais si la solution est en anglais je pourrais naturellement l'adapter.

Merci par avance à celle ou celui qui pourra se pencher sur mon problème.
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Voyez le fichier joint et cette fonction VBA :
VB:
Function JoindreUnique$(txt$, sep$, sep1$)
Dim e, x$
If txt = "" Then Exit Function
txt = Replace(txt, sep1, sep)
x = sep
For Each e In Split(txt, sep)
    e = Trim(e)
    If InStr(x, sep & e & sep) = 0 Then x = x & e & sep
Next
JoindreUnique = Mid(x, Len(sep) + 1, Len(x) - 2 * Len(sep))
End Function
Le code doit être placé impérativement dans un module standard.

Formule en B2 =JoindreUnique(A2;"|";">")

A+
 

Pièces jointes

  • catégories_articles.xlsm
    16.2 KB · Affichages: 1
Dernière édition:

Tidjyphenom

XLDnaute Nouveau
Bonjour,
Voici une solution Power Query
Clic droit dans une cellule de la requête, "Actualiser", pour mettre à jour
Bonne journée

Je reviens un peu tard pour te dire merci pour ta solution. J'ai apporté quelques retouches à ta proposition pour l'adapter pleinement à mon document réel. Entre temps ton exemple m'a permis de toucher un minimum à Power Query que je ne connaissais pas et d'apprendre à l'utiliser un peu plus. Problème résolu donc.

Et merci à toutes les propositions que je n'ai pas testé mais que je garde sous le coude au cas où ça pourrait resservir :)
 

Discussions similaires

Statistiques des forums

Discussions
312 025
Messages
2 084 751
Membres
102 653
dernier inscrit
kulas11