Supprimer par macro le dernier saut de ligne (retour chariot ou Chr10) d'une cellule

océanne

XLDnaute Occasionnel
Bonsoir le forum,

ça fait deux bonnes heures que je me casse les dents sur le souci suivant sans succès.

Je récupère d'une listbox2 contenue dans un USF, plusieurs items, que je transfère dans ma cellule active jusque là ça va.
J'ai ajouté un Chr(10) afin que les items soient positionnés les un sous les autres dans ma cellule....mon souci en fait c'est que j'ai un retour Chariot après le dernier item, dont je ne veux pas.
J'ai essayé de finir ma macro avec ces bouts de code pour le supprimer mais sans plus de succès
ActiveCell.Replace Chr(10) & " ", "", lookAt:=xlPart
ActiveCell.Replace Chr(10), ""
(code que j'ai trouvé sur le forum, rédigés par Pierrot93), je vous joins ci-dessous ma petite macro, si l'un d'entre vous a une idée, je suis preneuse. Bonne soirée

Private Sub CommandButton5_Click()
Dim I As Integer
With Me.ListBox2
For I = 0 To .ListCount - 1
ActiveCell = ActiveCell & .List(I) & Chr(10)
Next I
End With
Unload Me
End Sub
 

Jack2

XLDnaute Occasionnel
Re : Supprimer par macro le dernier saut de ligne (retour chariot ou Chr10) d'une cel

Bonsoir Océane,

Peut-être comme ça :
Code:
For I = 0 To .ListCount - 1
If I < .ListCount - 1 Then
    ActiveCell = ActiveCell & .List(I) & Chr(10)
Else
   ActiveCell = ActiveCell & .List(I)
end if
Next I
Bonne nuit,

A+ Jac2
 

Valentin_Loupe

XLDnaute Occasionnel
Re : Supprimer par macro le dernier saut de ligne (retour chariot ou Chr10) d'une cel

Bonjour Océanne,

Dans ta boucle :
Code:
For I = 0 to .ListCount - 1
Tu peux faire un test sur le I pour savoir ce qui doit être fait :

Code:
For I = 0 to .ListCount - 1
    If I <> .ListCount - 1 then
        ActiveCell = ActiveCell & .List(I) & Chr(10)
    Else
         ActiveCell = ActiveCell & .List(I)
    End If
Next
Ou même, plus rapidement en utilisant IIf (avec 2 I) :

Code:
For I = 0 to .ListCount - 1
    ActiveCell = ActiveCell & .List(I) & IIf(I<>.ListCount - 1, Chr(10),"")
Next

Bonne soirée,

Valentin
 

job75

XLDnaute Barbatruc
Re : Supprimer par macro le dernier saut de ligne (retour chariot ou Chr10) d'une cel

Bonjour océanne, Jack2, Valentin_Loupe,

Code:
Private Sub CommandButton5_Click()
Dim i As Integer, t As String
With Me.ListBox2
  For i = 0 To .ListCount - 1
    t = t & vbLf & .List(i)
  Next
End With
ActiveCell = Mid(t, 2)
Unload Me
End Sub
- la macro est beaucoup plus rapide en utilisant la variable t

- vbLf c'est Chr(10)

A+
 

Discussions similaires