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

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Effectivement sans fichier joint, c'est difficile d'imaginer le truc.
Du coup, je suis parti avec simplement plusieurs espaces séparant 2 mots
Exemple : TOTO TITI
et j'en ai sorti cette formule de ma petite tête, mais quelle formule !!!!!
En A1= TOTO TITI et la formule en B1=GAUCHE(A1;TROUVE(" ";A1;1)-1) & CAR(10) & STXT(A1;TROUVE(" ";A1;1)+NBCAR(A1)-NBCAR(SUBSTITUE(A1;" "; ""));10)
@+ Lolote83
 

Automatik

XLDnaute Nouveau
Hello

la difficulté que je vois, est que le nombre d'espaces entre les mots n'est pas forcément le meme..?
un test en PJ pour supprimer ces espaces parasites
Bonjour,
Merci de ta réponse, je ne souhaite pas faire une macro, j'aimerais juste une formule (si elle existe).
Il faudrait que les espaces soient remplacés par un retour à la ligne.
Je te mets un exemple (j'ai oublié de le mettre avant, grave erreur de ma part, sorry..)
 

Pièces jointes

  • Exemple.xlsx
    11.1 KB · Affichages: 5

Automatik

XLDnaute Nouveau
Salut,

=SUBSTITUE(A1;" ";CAR(10))
Salut,
Merci pour ta réponse c'est quasiment ça, mais le problème c'est que je ne connais pas le nombre d'espace qu'il y a en trop. Je te mets l'exemple, ça sera plus clair, je ne veux pas remplacer tous les espaces, mais juste quand il y en a plein j'aimerais que ça devienne un retour à la ligne
 

Pièces jointes

  • Exemple.xlsx
    11.1 KB · Affichages: 1

Automatik

XLDnaute Nouveau
Bonjour,
Essayez ça pour voir :
VB:
=SUBSTITUE(A1;"  ";" ")
Cela remplace le double espace par un seul espace. Ne touche pas aux espaces uniques.
Et utilisez Format de cellule/Alignement/Renvoyez à la ligne.
Salut,
Merci pour ta réponse, c'est presque ça mais je n'ai pas que des doubles espaces, parfois il y a 20 espaces d'affilée.. Je te met l'exemple, ça explique mieux mon problème je pense.
 

Pièces jointes

  • Exemple.xlsx
    11.1 KB · Affichages: 1

Automatik

XLDnaute Nouveau
Bonjour à tous,
Effectivement sans fichier joint, c'est difficile d'imaginer le truc.
Du coup, je suis parti avec simplement plusieurs espaces séparant 2 mots
Exemple : TOTO TITI
et j'en ai sorti cette formule de ma petite tête, mais quelle formule !!!!!
En A1= TOTO TITI et la formule en B1=GAUCHE(A1;TROUVE(" ";A1;1)-1) & CAR(10) & STXT(A1;TROUVE(" ";A1;1)+NBCAR(A1)-NBCAR(SUBSTITUE(A1;" "; ""));10)
@+ Lolote83
Bonjour,
Merci de ta réponse.
Effectivement désolé d'avoir oublié le fichier..
Je te le met là.
J'ai essayé ta formule et ça m'affiche que le premier mot.
 

Pièces jointes

  • Exemple.xlsx
    11.1 KB · Affichages: 1

vgendron

XLDnaute Barbatruc
sans macro. je ne sais pas faire..
par macro. ca donne ca
VB:
Sub test2()
Chaine = Range("A1") 'on récupère la chaine à traiter

For i = 1 To Len(Chaine) 'pour chaque caractère de la chaine
    If Mid(Chaine, i, 1) = " " And Mid(Chaine, i + 1, 1) = " " Then 'si le caractère i ET le caractère sont des espaces
        j = i
        While Mid(Chaine, j, 1) = " " 'on continue de parcourir jusqu'à trouver le dernier espace de la série
            j = j + 1
        Wend
        Chaine= Replace(Chaine, Mid(Chaine, i, j - i), Chr(10)) 'on remplace toute la série par un retour chariot
    End If
Next i

Range("B1") = Chaine
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 984
Membres
103 079
dernier inscrit
sle