Supprimer le dernier retour à la ligne
A
Bonjour,
Je suis entrain de créer une macro, parmi d'autres, ayant vocation à supprimer CR (ou chr(13) ) à la la dernière ligne d'un fichier extérieur.
Peut-être auriez-vous une idée ?
La macro ci-dessous est en travaux, d'où le manque de rigueur apparente. Veuillez m'en excuser.
Sub Try3_travaux()
Dim folder_to_choose As String
Dim Filename As String
Dim file As String
Dim wb As Workbook
folder_to_choose = "G:\service INFORMATIQUE 5IVE\BIKE OFFICE\IMPORT_FICHIERS\Matrices internes\MACROS_ESTEVEZ\essai\"
Filename = "NewVaude_2023-05-25-10-17 Stade 1.csv"
file = folder_to_choose & Filename
' Ouverture du classeur
Set wb = Workbooks.Open(file)
newFileName = Rows(NbRows).Replace(file, Chr(13), "")
'Application.DisplayAlerts = False
'wb.SaveAs newFileName, FileFormat:=xlCSV, Local:=True
'Application.DisplayAlerts = True
' Fermeture du classeur
wb.Close SaveChanges:=False
End SubBouboule.
bonjour,
une proposition
Sub supprimechr13()
'supprime le dernier caractère du fichier si c'est un return(13) ou un linefeed(10)
With Application.FileDialog(msoFileDialogFilePicker)
If .Show Then
Stop
fn = .SelectedItems(1)
Else
MsgBox "pas de fichier sélectionné"
Exit Sub
End If
Set fso = CreateObject("scripting.filesystemobject")
Set ts = fso.opentextfile(fn, 1)
r = ts.readall
lc = Right(r, 1)
If lc = Chr(10) Or lc = Chr(13) Then 'si return ou linefeed
r = Left(r, Len(r) - 1)
Set tso = fso.opentextfile(Left(fn, InStrRev(fn, ".") - 1) & "chr13" & Mid(fn, InStrRev(fn, ".")), 2, True)
tso.write r
tso.Close
Else
MsgBox "last char" & lc & ",ascii " & Asc(lc)
End If
ts.Close
End With
End SubA
Bonjour le forum,
Concernant votre problème, vous devez d'abord déterminer le nombre total de lignes du fichier CSV, puis vous devez lire la dernière ligne, supprimer le caractère de retour chariot (s'il est présent) et réécrire la ligne. Ensuite, vous pouvez sauvegarder le fichier.
Un exemple de code à tester :
Sub Try3_travaux()
Dim folder_to_choose As String
Dim Filename As String
Dim file As String
Dim wb As Workbook
Dim ws As Worksheet
Dim lastRow As Long
Dim lastLine As String
folder_to_choose = "G:\service INFORMATIQUE 5IVE\BIKE OFFICE\IMPORT_FICHIERS\Matrices internes\MACROS_ESTEVEZ\essai\"
Filename = "NewVaude_2023-05-25-10-17 Stade 1.csv"
file = folder_to_choose & Filename
' Ouverture du classeur
Set wb = Workbooks.Open(file)
Set ws = wb.Sheets(1) ' assume que le fichier CSV n'a qu'une seule feuille
' Obtenir le nombre total de lignes
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Lire la dernière ligne
lastLine = ws.Cells(lastRow, 1).Value
' Supprimer le caractère de retour chariot, s'il est présent
If Right(lastLine, 1) = Chr(13) Then
lastLine = Left(lastLine, Len(lastLine) - 1)
End If
' Réécrire la dernière ligne
ws.Cells(lastRow, 1).Value = lastLine
' Sauvegarder et fermer le classeur
wb.Close SaveChanges:=True
End Sub