Fonction SPLIT

Résolu/Fermé
Nico - Modifié par pijaku le 26/08/2016 à 13:37
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 août 2016 à 14:55
Bonjour,

J'ai n cellules dans une colonne. Les n cellules contiennent de 1 à n lignes.
Je souhaite dissocier ces lignes dans une autre colonne.

La macro fonctionne si je définie une cellule (ex. B1). En revanche pour une plage, j'ai toujours une erreur.

Ci-dessous la macro en question :

Sub decoupe2()
Dim s As Variant, i As Byte
s = Split(Range("B" & Rows.Count), Chr(10))
For i = 0 To UBound(s)
    Cells(i + 1, 3).Value = s(i)
Next i
End Sub


Merci de votre aide !

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
26 août 2016 à 13:41
Bonjour,

Avec restitution à partir de la colonne C :
Dim DL As Long, Lig As Long, Col As Integer, s As Variant, i As Byte
DL = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row 
Col = 3
For Lig = 1 To DL
    If Instr(Range("B" & Lig), Chr(10)) > 0 Then
        s = Split(Range("B" & Lig), Chr(10))
        For i = 0 To UBound(s)
            Cells(i + 1, Col).Value = s(i)
        Next i
        Col = Col + 1
    End If
Next Lig


Code non testé, écrit "à l'arrache"...
0
Merci pour ta réponse pijaku, la macro fonctionne parfaitement !
Est-il possible de mettre le contenu des lignes l'une à la suite des autres et non en changeant de colonne ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750 > Nico
26 août 2016 à 14:24
Oui.
Regarde la solution de Thev (salutations au passage).
0