Déconcaténer une phrase de longueur variable

Résolu
Bonjour,

J'ai trouvé une formule pour dé-concaténer mais elle est un peu complexe, et après de nombreux essais infructueux, je me tourne vers vous...

La formule fonctionne bien, elle sépare une phrase de taille variable et place chaque mot dans des cellules séparées en fonction des espaces dans la phrase.

En A3 la phrase à découper
en B3, C3, D3, E3, F3 ........ la formule suivante:
=SI(COLONNE()=2;SI($A3="";"";SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;" ";""))=0;$A3;GAUCHE($A3;TROUVE(" ";$A3;2))));SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;" ";""))<COLONNE()-2;"";STXT($A3;TROUVE("µ";SUBSTITUE($A3&" ";" ";"µ";COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A3&" ";" ";"µ";COLONNE()-1);1)-TROUVE("µ";SUBSTITUE($A3;" ";"µ";COLONNE()-2);1)-1)))

Si en A3 j'ai "bonjour à tous de Bretagne"
je me retrouve bien en:
B3:bonjour
C3:à
D3:tous
E3:de
F3:Bretagne

Je souhaite modifier la formule pour qu'elle sépare les mot non pas à chaque espace mais à chaque _

concrètement, si j'ai en A3 "bonjour_à_tous_de_Bretagne"
j'aimerai me retrouver avec les même résultat que précédemment, à savoir:
B3:bonjour
C3:à
D3:tous
E3:de
F3:Bretagne

Quelqu'un s'y connaissant mieux que moi arriverait à modifier cette formule?

Merci!

5 réponses

  1. Bonjour,
    C'est la formule de départ qu'il faut corriger avant de remplacer " " par "_".
    =SI(COLONNE()=2;SI($A3="";"";SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;" ";""))=0;$A3;GAUCHE($A3;TROUVE(" ";$A3;2)-1)));SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;" ";""))<COLONNE()-2;"";STXT($A3;TROUVE("µ";SUBSTITUE($A3&" ";" ";"µ";COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A3&" ";" ";"µ";COLONNE()-1);1)-TROUVE("µ";SUBSTITUE($A3;" ";"µ";COLONNE()-2);1)-1)))
    1
    1. Contributeur
      Bonsoir

      voyez si ce modèle peut vous convenir
      s'il n'y a pas assez de mots prévus, il suffit de tirer les cellules à formule vers la droite (s'arrête à Z dans le modèle)
      https://www.cjoint.com/c/FCjss36p80v

      crdlmnt

      1
      1. Contributeur
        Quand tu remplaces " " par "_" ça ne marche pas ?
        0
        1. Non, j'ai testé. C'est malheureusement pas si simple sinon je ne serais pas la.
          0
      2. Contributeur
        Bonjour
        pourquoi ne pas utiliser la fonction "convertir" de Excel en sélectionnant le séparateur à prendre en compte?
        crdlmnt
        0
        1. Pour divers raisons qu'il est inutile de citer ici... Merci. J'ai besoin de cette formule. Malheureusement elle est compliquée et moi j'ai pas le niveau. Elle separe les mots a chaque espace, il me parait possible de la modifier pour agir avec un symbole.
          0
      3. Merci à tontong pour avoir corrigé ma formule, maintenant je peut remplacer les espaces par un symbole.
        et Vaucluse qui me propose une autre formule qui fait la même chose mais est plus simple.

        Vraiment vous avez assuré! Vous me sortez d'une belle prise de tête ^^
        Merci Merci Merci !!!!

        Comme les fichiers ci-joint disparaissent avec le temps, je reporte leurs solutions ci-après:

        -------------------------------------

        La solution de tongtong:
        en A3: la phrase
        En B3, C3, D3 .... C'est toujours la même
        =SI(COLONNE()=2;SI($A3="";"";SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;"_";""))=0;$A3;GAUCHE($A3;TROUVE("_";$A3;2)-1)));SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;"_";""))<COLONNE()-2;"";STXT($A3;TROUVE("µ";SUBSTITUE($A3&"_";"_";"µ";COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A3&"_";"_";"µ";COLONNE()-1);1)-TROUVE("µ";SUBSTITUE($A3;"_";"µ";COLONNE()-2);1)-1)))

        ---------------------------------------

        Et la solution de Vaucluse:
        En A3: la phrase
        en B3
        =SIERREUR(GAUCHE($A3;TROUVE("/";SUBSTITUE($A3;"_";"/";COLONNE(A$1)))-1);"")

        Puis en C3
        =SIERREUR(STXT($A3;TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(A$1)))+1;TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(B$1)))-TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(A$1)))-1);"")

        puis étirer C3 vers la droite autant de fois que l'on veut

        ce qui donne en D3:
        =SIERREUR(STXT($A3;TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(B$1)))+1;TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(C$1)))-TROUVE("/";SUBSTITUE($A3&"_";"_";"/";COLONNE(B$1)))-1);"")

        etc......

        -------------------------------------

        Vous êtes des AS !!!!!! Encore Merci !!!!!!!
        0