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

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

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