Microsoft 365 Comment remplacer des espaces en trop par un retour à la ligne ? (avec une formule)

Automatik

XLDnaute Nouveau
Bonjour tout le monde,

Je fais de nouveau appel à vous car j'ai un problème.

J'ai des cellules dans lesquelles il y a de nombreux espaces entre des mots.
Cela a été fait parce que la personne ne savait pas faire de retour à la ligne.
Sauf que moi quand je récupère ces cellules évidemment ça me remet tous les espaces, et comme mes cellules ne font pas la même taille je suis obligé de les supprimer moi-même et de remplacer par un retour à la ligne ?

J'ai essayé avec: SUPPRESPACE et CAR(10) mais je n'arrive pas à les mettre en lien...

Quelqu'un connaîtrait-il la solution ?

Alban
 

Pièces jointes

  • Exemple.xlsx
    11.1 KB · Affichages: 11
Dernière édition:
Solution
Bonjour le fil, le forum

une proposition en formule, à partir de 3 espaces successifs, pour intégrer les erreurs possibles de saisie à 2 espaces. Les espaces d'erreur de saisie sont traités par le SUPPRESPACE.
Traite de 3 jusqu'à 362 espaces consécutifs pour un retour à la ligne.
VB:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUPPRESPACE(SUBSTITUE(A4;"   ";"|"));"|||||";"|");"||||";"|");"|||";"|");"||";"|");"| ";"|");"|";CAR(10))

Cordialement, @+

[édition : petite amélioration de la formule]

1663063578086.png
Bonjour le fil, le forum

une proposition en formule, à partir de 3 espaces successifs, pour intégrer les erreurs possibles de saisie à 2 espaces. Les espaces d'erreur de saisie sont traités par le SUPPRESPACE.
Traite de 3 jusqu'à 362 espaces consécutifs pour un retour à la ligne.
VB:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUPPRESPACE(SUBSTITUE(A4;"   ";"|"));"|||||";"|");"||||";"|");"|||";"|");"||";"|");"| ";"|");"|";CAR(10))

Cordialement, @+

[édition : petite amélioration de la formule]

1663063578086.png
 

Pièces jointes

  • Exemple.xlsx
    12.1 KB · Affichages: 4
Dernière édition:

Automatik

XLDnaute Nouveau
Bonjour le fil, le forum

une proposition en formule, à partir de 3 espaces successifs, pour intégrer les erreurs possibles de saisie à 2 espaces.
Traite de 3 jusqu'à 362 espaces consécutifs.
VB:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUPPRESPACE(SUBSTITUE(A4;"   ";"|"));"|||||";"|");"||||";"|");"|||";"|");"||";"|");"| ";"|");"|";CAR(10))

Cordialement, @+
Regarde la pièce jointe 1149379
Bonjour,
Trop fort c'est ça !! Le fait de laisser la possibilité de faire 3 espaces d'erreurs débloqué le problème j'y avais pas pensé ! Tu es un génie !
Merci 👏👏
 
re,
et dans le cas d'un utilisateur distrait et pénible (pour rester poli) qui met 3 espaces
il faut bien définir une limite qui est le nombre minimum d'espaces devant être interprété comme retour à la ligne. Si on est sur qu'il y en aura au moins quatre ou plus, on peut en ajouter facilement dans le premier substitue sans modifier autre chose dans la formule.
J'ai souvent rencontré deux espaces en erreur de saisie, c'est courant, trois quasiment jamais, quatre jamais, cela se voit trop.

Cordialement, @+
 
Dernière édition:

vgendron

XLDnaute Barbatruc
@Bernard_XLD je suis tout à fait d'accord, il faut bien fixer des limites à un moment ou un autre

c'était juste pour réagir à la réponse d'Automatik qui dit que le problème est débloqué
je dirais plutot qu'il est "déplacé"
Toutes les solutions que nous avons proposées (formules et macros) ne traitent que la conséquence du problème mais pas l'origine de celui ci.
et ca.. comme suggéré précédemment, ca passe par controler la saisie dès le départ
 
Bonjour le fil, le forum

Vgendron, je n'ai jamais dit le contraire.
La formule permettra à Automatik de traiter l'existant, ce qui était sa demande principale.
Voici une petite amélioration de la formule où on peut définir, avec REPT, le nombre d'espaces consécutifs minimum devant être interprétés comme retour à la ligne, les nombres inférieurs sont traités par SUPPRESPACE, j'ai mis 4 espaces minimum par défaut pour un retour à la ligne.
Code:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUPPRESPACE(SUBSTITUE(A4;REPT(" ";4);"|"));"|||||";"|");"||||";"|");"|||";"|");"||";"|");"| ";"|");"|";CAR(10))

Cordialement, @+
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 122
Membres
112 666
dernier inscrit
Coco0505