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

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 !

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

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