Excel 2010 - Remplacer un caractère par un retour chariot

poussin69110

Membre enregistré
18 Janvier 2013
4
1
39
Bonjour à tous

Ne trouvant pas réponse à ma question malgré mes recherches, je me lance dans l'écriture d'un nouveau post.
J'ai l'habitude de manipuler les macros en VBA et les fonctions liées à la manipulation de texte, mais là, je cale :confused:.

J'ai dans les mains un fichier Excel 2010 dans le lequel j'ai une colonne de données où chaque cellule contient plusieurs informations, toutes séparées par des virgules et un espace selon le schéma suivant :

-------
Info1, Info2, Info3 ....
-------
Info4, Info5, Info6 ....
-------

Ce que je cherche à faire, c'est présenter les données séparées chacune par un retour chariot tout en restant dans la même cellule, comme si je faisais Cmd+alt+Entrée, autrement dit :

-------
Info1
Info2
Info3
....
-------
Info4
Info5
Info6
....
-------
Étant donné que j'ai plus de 2000 lignes à traiter, je voudrais automatiser la chose ... :siffle:
J'ai bien tenté de faire Ctrl+F puis Remplacer pour remplacer ", " par un retour chariot, seulement je ne trouve pas le code correspondant :(

Peut-être y a-t-il une autre méthode ...
Je m'en remets à vous et à votre bonté.

Merci beaucoup :zen:
 
Si tu as Excel, tu dois aussi avoir Word, donc, ouvre ton fichier avec Word, et fais ton "rechercher-remplacer" avec lui, et ré-enregistre ensuite en "texte seul" avant de rouvrir avec Excel !

rechrempword.jpg

Si tu ne veux pas passer par le menu local "Spécial", tu mets directement "^p" dans la rubrique "remplacer par".

EDIT : j'avais mal lu, tu ne peux pas faire ça par "rechercher-remplacer", car ça te mettrait une valeur par ligne. Dans ton cas, il te faut construire des chaînes de caractères avec l'opérateur de concaténation, donc des formules pour chaque cellule (exemple avec ta première cellule) :

Bloc de code:
="info1"&car(10)&"info2"&car(10)&"info3"

Tu vas donc devoir construire ces formules en VBA. La question est : comment différencies tu le "car(10)" interne à une cellule (donc inclus dans la formule) de celui utilisé pour passer à la cellule suivante ?
 
Dernière édition:
Bonjour,

Même directement dans Excel, tu crées une nouvelle colonne et tu y mets la formule "substitue".

En supposant que les cellules contenant le texte soit en colonne "A".
- tu crées une nouvelle colonne en "B"
-Tu formates ces cellules avec retour à la ligne automatique
-Tu écris la formule "=SUBSTITUE(A1;", ";CAR(13))"
-Tu copies, en tirant vers le bas, cette formule dans la colonne "B"
 
Dernière édition:
Merci à vous ! :up:

Je n'ai pas essayé ta méthode Pascal 77, car il me fallait extraire les "InfoX" de chaque ligne pour ensuite les concatener avec ta formule, le problème étant que le nombre de "InfoX" est variable à chaque ligne (ce que je n'avais peut-être pas précisé). Mais merci quand même de t'être creusé la tête pour moi :zen:.

Effectivement zeltron, c'est la fonction à laquelle j'avais pensé, mais je ne connaissais pas la syntaxe pour le code CAR(13) :D.

Encore merci
 
Bonjour,

Même directement dans Excel, tu crées une nouvelle colonne et tu y mets la formule "substitue".

En supposant que les cellules contenant le texte soit en colonne "A".
- tu crées une nouvelle colonne en "B"
-Tu formates ces cellules avec retour à la ligne automatique
-Tu écris la formule "=SUBSTITUE(A1;", ";CAR(13))"
-Tu copies, en tirant vers le bas, cette formule dans la colonne "B"

Bon, la règle du jeu semble avoir changé dans Excel 2011, car ni "car(10)", ni "car(13)", ni les deux (car(13)&car(10)) ne provoquent de retour à la ligne dans une cellule, pourtant il me semblait bien que ça marchait dans Office 2004 ? :confused:

Bernard, tu es dans le coin ? :rateau:
 
Dans les versions Windows, l'opération peut se faire simplement en tapant dans le champ "Remplacer par" les chiffres 0010 tout en tenant la touche "Alt" enfoncée. Rien ne s'affiche dans le champ mais ça remplace bien les séquences voulues par des renvois à la ligne. Je ne suis pas en mesure de tester sur Mac pour le moment, mais il me semble qu'on peut saisir le code en Unicode d'une façon plus ou moins équivalente (Option-0010).

Dans le cas de la fonction "Substitue" indiquée ci-dessus, il peut être nécessaire d'aller cocher la case "Renvoyer à la ligne automatiquement" (dans le menu "Format" > "Cellule..." > "Alignement") pour que l'affichage se fasse correctement (sinon, ça affiche des carrés blancs).
 
Merci à zeltron54 pour la méthode à appliquer (perso c'est l'inverse que je devais faire).
Dommage qu'on ne puisse pas le faire en rechercher-remplacer, ce serait tellement simple. J'ai quand-même posé la question sur le site de microsoft ou ils donnent l'astuce du ALT 010, allez savoir.
 
Je suis avec Excel 2016 et je souhaite également remplacer le caractère "," par un retour à la ligne dans la même cellule.
Comment faire ?
En reprenant (et adaptant un peu) la formule de Zeltron : dans la cellule voisine, tu mets la formule =SUBSTITUE(A1;",";CAR(10)) et tu t'assures (menu "Mise en forme" > "Cellule...") de bien avoir coché la case "Renvoyer à la ligne automatiquement". Cela oblige à y consacrer une colonne (quitte à faire un collage spécial > "Valeurs" ensuite pour la neutraliser).

Si vraiment ça doit impérativement rester dans la même cellule, il faut faire faire le travail par une macro. La ligne magique est alors :
ActiveSheet.Range("A1").Value = Replace(ActiveSheet.Range("A1").Value, ",", Chr(10))
 
En reprenant (et adaptant un peu) la formule de Zeltron : dans la cellule voisine, tu mets la formule =SUBSTITUE(A1;",";CAR(10)) et tu t'assures (menu "Mise en forme" > "Cellule...") de bien avoir coché la case "Renvoyer à la ligne automatiquement". Cela oblige à y consacrer une colonne (quitte à faire un collage spécial > "Valeurs" ensuite pour la neutraliser).

Si vraiment ça doit impérativement rester dans la même cellule, il faut faire faire le travail par une macro. La ligne magique est alors :
ActiveSheet.Range("A1").Value = Replace(ActiveSheet.Range("A1").Value, ",", Chr(10))

OK, merci pour ces formules magiques.
Je comprends comment fonctionne la première mais je n'arrive pas à saisir ce qu'il y a marqué dans la seconde pour la macro.
Peux-tu m'expliquer en me décortiquant la formule stp ? ActiveSheet.Range veut dire quoi stp ?
 
Peux-tu m'expliquer en me décortiquant la formule stp ? ActiveSheet.Range veut dire quoi stp ?
ActiveSheet : Feuille active (celle qui est affichée au premier plan)
Range("A1") : plage de cellules A1, comme Range("A1:B5") désignerait la plage de cellules A1:B5
Value : la valeur, c'est à dire le contenu affiché, par différence avec la formule ou le format

Autrement dit, on affecte comme valeur à la cellule A1 de la feuille qu'on a sous les yeux sa propre valeur dans laquelle on remplace la virgule par un saut à la ligne.