52 votes

Comment supprimer un saut de ligne dans une chaîne de caractères

Je veux supprimer le saut de ligne de la chaîne si ma chaîne se termine par un saut de ligne.

Sub linebreak(myString)
    If Len(myString) <> 0 Then
        If Right$(myString, 1) = vbCrLf Or Right$(myString, 1) = vbNewLine Then myString = Left$(myString, Len(myString) - 1)
    End If
End Sub

2 votes

vbCrLf y vbNewLine sont en fait constitués de deux caractères, ce qui signifie qu'ils doivent être remplacés par Right$(myString, 2)

1 votes

Niraj : Chris a tout à fait raison. @Chris : +1, veuillez l'afficher comme réponse :)

5voto

decas Points 63

Juste ceci :

str = Replace(str, vbCrLf, "")

3voto

user3117021 Points 55
mystring = Replace(mystring, Chr(10), "")

1voto

Divyank Sabhaya Points 265

Replace(yourString, vbNewLine, "", , , vbTextCompare)

1voto

Mouthpear Points 54

Je sais que cet article est très ancien, mais je n'ai rien trouvé qui permette de faire cela. J'ai donc finalement rassemblé ce qui suit à partir de tous les forums.

Cette opération supprime tous les sauts de ligne à gauche et à droite, ainsi que les lignes vierges. Il suffit ensuite de découper le tout pour qu'il ait une bonne apparence. Modifiez comme bon vous semble. J'en ai aussi fait un qui supprime tous les sauts de ligne, si cela vous intéresse. TY

    Sub RemoveBlankLines()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do
            If Left(strNewVal, 1) = vbLf Then strNewVal = Right(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            If Right(strNewVal, 1) = vbLf Then strNewVal = Left(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            strNewVal = Replace(strNewVal, vbLf & vbLf, "^")
            strNewVal = Replace(strNewVal, Replace(String(Len(strNewVal) - _
                        Len(Replace(strNewVal, "^", "")), "^"), "^", "^"), "^")
            strNewVal = Replace(strNewVal, "^", vbLf)

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If

        rngCel.Value = Application.Trim(rngCel.Value)
        End If
    Next rngCel
    Application.ScreenUpdating = True
End Sub

0voto

user1537510 Points 1
Private Sub Form_Load()
    Dim s As String

    s = "test" & vbCrLf & "this" & vbCrLf & vbCrLf
    Debug.Print (s & Len(s))

    s = Left(s, Len(s) - Len(vbCrLf))
    Debug.Print (s & Len(s))
End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X