supprimer les retours charriots

  • Initiateur de la discussion -fabien-
  • Date de début
F

-fabien-

Guest
Bonjour à tous,

j ai un petit soucis. j ai un fichier excel de 1600 enregistrements.
dans certaines cellules, le texte est en plusieurs lignes (alt+enter). je cherches un moyen simple de supprimer tous les retours chariots du document, pour que quand j'enregistre le fichier au format .txt, je n'ai pas les caracteres retour chariot (représentés par un carré) dans ce fichier.

Merci de votre aide, je n'ai pas beaucoup de temps pour trouver la solution et j'ai tout essayé, je suis perdu
 
J

JCA06

Guest
Bonjour Fabien, Nicolas, Pascal, Lapou, le Forum,

Allez Pascal, on est avec toi !

Quoi ? ça se voit que ça m'intéresse aussi ?

Bon, en attendant, une petite astuce que j'avais utilisée pour cela : passer par Word qui fait cela très bien. Faire un copier/coller de la colonne et faire Ctrl+H puis cliquer sur Plus et sur Spécial pour choisir "Saut de ligne manuel". Remplacez-le par ce que vous souhaitez : un espace par exemple ou autre chose comme un ; ou un $ ou un *...si vous souhaitez ensuite convertir la colonne dans excel.

Ensuite, refaites un copier/coller vers excel.
 
P

Pascal76

Guest
Re le fil

Bon je vous explique la démarche de Nicolas

Il faut faire Données > Convertir

Choisir Délimité puis cliquer sur suivant

Là il faut cocher Autres et dans la case à coté taper Alt 10 et cliquer sur suivant

Puis choisir la destination (même cellule ou cellules différentes.

Puis cliquer sur Terrminer

Pascal

Le problème c'est que je n'arrive pas à répéter son procédé mais bon ....
 
@

@+Thierry

Guest
Bonjour Fabien, Lapou, Pascal, JCA, Nicolas, le Forum

Vu que celà à l'air d'interresser du monde, je vous ai écrit une solution VBA pour remplacer ce que World fait tout seul... Et pas Excel semblerait-il (pour une fois que c'est pas l'inverse ! lol)

Voici pour le LineFeed (Chr(10)) qui correspond à la combinaison de Touches [ALT] + [ENTER] dans une cellule Excel

Sub KillLinefeed()
Dim TargetVbLF As Range
Dim FirstAddress As String

Application.ScreenUpdating = False

  With ActiveSheet.UsedRange
    Set TargetVbLF = .Find(vbLf, LookIn:=xlValues, LookAt:=xlPart)
      If Not TargetVbLF Is Nothing Then
        FirstAddress = TargetVbLF.Address
        Do
          TargetVbLF = Application.WorksheetFunction.Substitute(TargetVbLF.Text, vbLf, Chr(32))
          Set TargetVbLF = .FindNext(TargetVbLF)
          On Error Resume Next 'une erreur se produira au dernier VbLF
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loop While Not TargetVbLF Is Nothing And TargetVbLF.Address <> FirstAddress
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;End With

Application.ScreenUpdating = True
End Sub


Et au cas où pour le vrai "Carriage Return" (Chr(13)) :

Sub KillCarriageReturn()
Dim TargetVbCr As Range
Dim FirstAddress As String

Application.ScreenUpdating = False

&nbsp;&nbsp;With ActiveSheet.UsedRange
&nbsp;&nbsp;&nbsp;&nbsp;Set TargetVbCr = .Find(vbCr, LookIn:=xlValues, LookAt:=xlPart)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Not TargetVbCr Is Nothing Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FirstAddress = TargetVbCr.Address
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TargetVbCr = Application.WorksheetFunction.Substitute(TargetVbCr.Text, vbCr, Chr(32))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set TargetVbCr = .FindNext(TargetVbCr)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On Error Resume Next 'une erreur se produira au dernier VbCr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loop While Not TargetVbCr Is Nothing And TargetVbCr.Address <> FirstAddress
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;End With
Application.ScreenUpdating = True
End Sub


NB dans les exemple je remplace le Caractère Indésirable par un Espace (Chr(32)) vous pouvez le changer par ce que vous souhaitez...

Bon Appétit
@+Thierry
 
P

Pascal76

Guest
Re le fil

LOL Thierry te voilà gagné par l'hégémonie Microsoft : tu confonds World et Word. Tes doigts auraient-ils effectué un lapsus révélateur ??

Sur ce bon appétit et encore merci pour le code VBA.

Pascal
 
N

Nicolas 65

Guest
Bonjour le forum,

Je viens de retester sous W98 et Excel 2000 ma solution. Cela fonctionne impecablement. Je n'y arrive effectivement pas sous windows XP et Excel 2000. Si quelqu'un connait la solution je serais preneur. Il y a surement un paramétrage de windows XP à faire.

Merci
 
P

Pascal76

Guest
Re le fil

Nicolas, à première vue on a le même problème car je suis en Windows XP pro et excel 2000

Lorsque j'arrive à l'étape 1 pas de problème je vois bien mon caractère de saut de ligne (le carré blanc)
Mais lorsque je clique sur suivant je ne vois plus que les mots tapés avant le saut de ligne les autres ont disparu.

Voili voilou

Pascal
 
@

@+Thierry

Guest
Re bonjour

Donc Vite fait en plus simple encore

Sub KillLinefeedShort()
Application.ScreenUpdating = False

With ActiveSheet.UsedRange
.Replace Chr(10), Chr(32), 2
End With
Application.ScreenUpdating = True

End Sub

Bon Aprèm

@+Thierry
 

Discussions similaires