Trier des données textes issues d'une seule cellule

Bonjour,

J'ai une petite difficulté (qui me semble insurmontable avec ma connaissance d'Excel) mais je suis sur que certains d'entre vous auront des idées. Je souhaite trouver un moyen de passer d'une seule cellule excel contenant un certain nombre d'informations textes (ex : "/marie,responsable/edouard, responsable & client/michelle, salarié" ou encore "/mohamed,responsable/jean, responsable/michel, salarié/ jeanne, salarié & client") à plusieurs cellules contenant chacune les informations d'une catégorie de personne (ex : "responsable : marie, edouard", "salarié : michelle", "client : edouard" pour la première ligne).

J'ai essayé plusieurs choses mais je n'arrive pas à gérer tous les cas différents, le "&" me coince énormément en plus, dans la mesure où une personne peut apparaitre deux fois. Je préfèrerais idéalement une formule excel plutôt qu'une Macro mais je vous avoue que je suis preneur de tout, tant que ça marche ! :)

Avez-vous une idée ? Merci d'avance

Bonjour,

Avec 3 fonctions personnalisées, formules à saisir:

formule en D3: =ext_Resp($A2)

formule en E3: =ext_Sal($A2)

formule en F3: =ext_Cli($A2)

le code associé

Dim i As Long
Dim Texte As Variant

Function Ext_Resp(chaine As String) As String
    Texte = chaine & "/"
    Texte = Split(chaine, "/")
    For i = 1 To UBound(Texte)
        Rech_Virgule = InStr(1, Texte(i), ",", 1)
        Nom = Left(Texte(i), Rech_Virgule - 1)
        Fonction = InStr(1, Texte(i), "responsable", 1)
        If Fonction > 0 Then Mem_Nom = Mem_Nom & ", " & Nom
    Next
    Ext_Resp = Right(Mem_Nom, Len(Mem_Nom) - 2)
End Function

Function Ext_Sal(chaine As String) As String
    Texte = chaine & "/"
    Texte = Split(chaine, "/")
    For i = 1 To UBound(Texte)
        Rech_Virgule = InStr(1, Texte(i), ",", 1)
        Nom = Left(Texte(i), Rech_Virgule - 1)
        Fonction = InStr(1, Texte(i), "salarié", 1)
        If Fonction > 0 Then Mem_Nom = Mem_Nom & ", " & Nom
    Next
    Ext_Sal = Right(Mem_Nom, Len(Mem_Nom) - 2)
End Function

Function Ext_Cli(chaine As String) As String
    Texte = chaine & "/"
    Texte = Split(chaine, "/")
    For i = 1 To UBound(Texte)
        Rech_Virgule = InStr(1, Texte(i), ",", 1)
        Nom = Left(Texte(i), Rech_Virgule - 1)
        Fonction = InStr(1, Texte(i), "client", 1)
        If Fonction > 0 Then Mem_Nom = Mem_Nom & ", " & Nom
    Next
    Ext_Cli = Right(Mem_Nom, Len(Mem_Nom) - 2)
End Function

Cdlt

Bonjour,

Autre proposition en VBA aussi, mais j'ai bien peur qu'en ne travaillant pas sur le fichier réel on se plante une fois de plus (j'ai collé à l'exemple, à vous d'adapter).

Bon dimanche.

8separerdonnes.xlsm (18.01 Ko)

Bonjour,

En reprenant l'idée de la fonction personnalisée, mais avec une fonction unique.

en D2 à tirer vers la droite puis vers le bas: =extract($A2;D$1)

Le code:

Dim i As Long
Dim Texte As Variant

Function Extract(chaine As String, Fonct As Range) As String
    Texte = chaine & "/"
    Texte = Split(chaine, "/")
    For i = 1 To UBound(Texte)
        Rech_Virgule = InStr(1, Texte(i), ",", 1)
        Nom = Left(Texte(i), Rech_Virgule - 1)
        Fonction = InStr(1, Texte(i), Fonct, 1)
        If Fonction > 0 Then Mem_Nom = Mem_Nom & ", " & Nom
    Next
    Extract = Right(Mem_Nom, Len(Mem_Nom) - 2)
End Function

le fichier

Cdlt



Merci à vous tous, après 2j de galère à chercher (et a finie par penser que j'en demandais trop a Excel), vous me trouvez une fonction en quelques heures ! J'essaie d'implémenter ça demain, je n'ai jamais utilisé de fonction, mais ça a l'air faisable ! Encore merci

Bonjour à tous,

Une autre alternative avec Power Query.
Bonne journée.
Cdlt.

5wilane1541-pq.xlsx (18.87 Ko)

Bonjour à tous

Sauf erreur de ma part, il y a une petite modif à faire sur la requête de Jean-Eric car sur 2019, je crois que l’indexation n'est pas la même que sur 365

Je joins le fichier de Jean-Eric avec cette modif.

3wilane1541-pq.xlsx (18.85 Ko)

Merci à tous, toutes vos solutions fonctionnent à merveille (même celui de Jean-Eric sans la modif de Chris). J'ai choisit celle d'Arturo car c'est celle que j'ai le mieux compris ! Bonne journée à vous tous

Rechercher des sujets similaires à "trier donnees textes issues seule"