XL 2013 supprimer le 1er saut de ligne dans une cellule...mais uniquement celui-ci

CHLOE90

XLDnaute Junior
Bonsoir le Forum,

J'ai importé dans des cellules d'une feuille excel tout un tas de données, certaines d'entre elles commencent par un retour chariot vide (Chr10 ou Chr13...je fais pas bien la différence) que je voudrais enlever.
J'ai bien trouvé une macro qui supprime les sauts de lignes....ça supprime bien le retour chariot de la première ligne, mais ça supprime les autres sauts de lignes dans la cellule que je souhaitais conserver.

L'un d'entre vous aurait-il une idée à me soumettre SVP ?

Merci d'avance
Chloé
 

Laurent78

XLDnaute Occasionnel
Bonjour,
Sans VBA (si il s'agit d'un One shot de récupération de données) :
En supposant que la cellule A1 contienne du texte commençant ou pas par un CHR(10) ou CHR(13),
formule à mettre en B1 pour supprimer le premier caractère si besoin :
=SI(OU(GAUCHE(A1;1)=CAR(10);GAUCHE(A1;1)=CAR(10));DROITE(A1;NBCAR(A1)-1);A1)

En français : si le premier caractère est Chr10 OU Chr13, je reprends la chaîne de caractère en partant de la droite moins - 1 caractère.

finir par un copier/collage spécial pour ne garder que le résultat.

Cdlt
Laurent
 

CHLOE90

XLDnaute Junior
Petit complément d'information MaPomme Stp, comment adapter ton bout de code (qui marche très bien sur la cellue A1) aux cellules de la plage "B5:B5621"
D'avance merci pour ta patience, j'ai essayé d'adapter un "For Each cell In myRange"...mais excel fait que de me contrarier :mad:
Chloé
 

job75

XLDnaute Barbatruc
Bonjour,

Le retour chariot c'est CAR(10) ou vbLf en VBA, CAR(13) c'est vbCr.

Avec un tableau VBA la suppression est très rapide :
VB:
Sub SupVBLF()
Dim tablo, i&
With ActiveSheet 'à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[B5:B5621]
        tablo = .Formula 'matrice, plus rapide
        For i = 1 To UBound(tablo)
            If Left(tablo(i, 1), 1) = vbLf Then tablo(i, 1) = Mid(tablo(i, 1), 2)
        Next
        .Formula = tablo 'restitution
    End With
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Ah oui mais il faut comme mapomme traiter les cas où il y a plusieurs vbLf successifs en tête :
VB:
Sub SupVBLF()
Dim tablo, i&, x$, j%
With ActiveSheet 'à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[B5:B5621]
        tablo = .Formula 'matrice, plus rapide, au moins 2 éléments
        For i = 1 To UBound(tablo)
            x = tablo(i, 1)
            For j = 1 To Len(x)
                If Mid(x, j, 1) <> vbLf Then Exit For
            Next j
            tablo(i, 1) = Mid(x, j)
        Next i
        .Formula = tablo 'restitution
    End With
End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
celle supprime les premier saut de lignes du début du texte de la cellule A1
tout les autres elle les garde
VB:
Sub test()
    Dim ok As Boolean,i&,t$
    t = [A1].Text: x = Split(t, Chr(10)): t = ""
    Do While i < UBound(x) + 1
        If x(i) <> "" Then ok = True
        If ok = True Then t = t & x(i) & IIf(i <> UBound(x), Chr(10), "")
        i = i + 1
    Loop
    MsgBox t
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman