Déconcaténer une phrase de longueur variable

Résolu
tiralia Messages postés 1577 Date d'inscription   Statut Membre Dernière intervention   -  
tiralia Messages postés 1577 Date d'inscription   Statut Membre Dernière intervention   -
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

tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
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
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 440
 
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
Raymond PENTIER Messages postés 58998 Date d'inscription   Statut Contributeur Dernière intervention   17 369
 
Quand tu remplaces " " par "_" ça ne marche pas ?
0
tiralia Messages postés 1577 Date d'inscription   Statut Membre Dernière intervention   256
 
Non, j'ai testé. C'est malheureusement pas si simple sinon je ne serais pas la.
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 440
 
Bonjour
pourquoi ne pas utiliser la fonction "convertir" de Excel en sélectionnant le séparateur à prendre en compte?
crdlmnt
0
tiralia Messages postés 1577 Date d'inscription   Statut Membre Dernière intervention   256
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tiralia Messages postés 1577 Date d'inscription   Statut Membre Dernière intervention   256
 
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