Supprimer le dernier retour à la ligne

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 Sub

Bouboule.

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 Sub

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
Rechercher des sujets similaires à "supprimer dernier retour ligne"