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 -
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!
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!
A voir également:
- Deconcatener une cellule
- Deconcatener - Forum Bureautique
- Deconcatener excel ✓ - Forum Excel
- Contraire de concatener ? ✓ - Forum Bureautique
- Déconcaténer : Help ! ✓ - Forum Excel
5 réponses
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)))
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)))
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
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
Bonjour
pourquoi ne pas utiliser la fonction "convertir" de Excel en sélectionnant le séparateur à prendre en compte?
crdlmnt
pourquoi ne pas utiliser la fonction "convertir" de Excel en sélectionnant le séparateur à prendre en compte?
crdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !!!!!!!
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 !!!!!!!