Déconcaténer une phrase de longueur variable [Résolu/Fermé]

Signaler
Messages postés
1594
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
9 mars 2016
-
Messages postés
1594
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
9 mars 2016
-
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

Messages postés
2302
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
7 avril 2020
799
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 80679 internautes nous ont dit merci ce mois-ci

Messages postés
25007
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 avril 2020
5 149
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 80679 internautes nous ont dit merci ce mois-ci

Messages postés
51509
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
9 avril 2020
12 668
Quand tu remplaces " " par "_" ça ne marche pas ?
Messages postés
1594
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
9 mars 2016
194
Non, j'ai testé. C'est malheureusement pas si simple sinon je ne serais pas la.
Messages postés
25007
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 avril 2020
5 149
Bonjour
pourquoi ne pas utiliser la fonction "convertir" de Excel en sélectionnant le séparateur à prendre en compte?
crdlmnt
Messages postés
1594
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
9 mars 2016
194
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.
Messages postés
1594
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
9 mars 2016
194
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 !!!!!!!