A voir également:
- Split excel francais
- Excel split francais - Meilleures réponses
- Fonction split excel - Meilleures réponses
- Fonction SPLIT ✓ - Forum - VB / VBA
- Séparation de chaînes de caractères en Excel - Forum - Excel
- Concatenate excel francais - Conseils pratiques - Excel
- Goal seek excel français - Conseils pratiques - Excel
- Text to column excel francais - Forum - Windows
4 réponses
pijaku
- Messages postés
- 12247
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 10 février 2021
Bonjour,
Avec restitution à partir de la colonne C :
Code non testé, écrit "à l'arrache"...
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"...
thev
- Messages postés
- 1769
- Date d'inscription
- lundi 7 avril 2008
- Statut
- Membre
- Dernière intervention
- 15 juin 2020
Bonjour,
ci-dessous autre solution à partir de la colonne C
ci-dessous autre solution à partir de la colonne C
Sub dissocier()
Dim xl As Excel.Application
Dim cellule As Range
Dim nb_lignes As Integer, i As Long
Dim s() As String
Set xl = Application
For Each cellule In Columns("B").SpecialCells(xlCellTypeConstants)
s = Split(cellule, Chr(10))
nb_lignes = UBound(s) + 1
i = cellule.Row ' numéro de ligne de la plage
Cells(i, "C").Resize(, 2).Value = xl.Transpose(xl.Transpose(s))
Next cellule
End Sub
thev
- Messages postés
- 1769
- Date d'inscription
- lundi 7 avril 2008
- Statut
- Membre
- Dernière intervention
- 15 juin 2020
Petit oubli suite à mon test
la bonne instruction est :
refourniture du code complet
la bonne instruction est :
Cells(i, "C").Resize(, nb_lignes).Value = xl.Transpose(xl.Transpose(s))
refourniture du code complet
Sub découpe()
Dim xl As Excel.Application
Dim cellule As Range
Dim nb_lignes As Integer, i As Long
Dim s() As String
Set xl = Application
For Each cellule In Columns("B").SpecialCells(xlCellTypeConstants)
s = Split(cellule, Chr(10))
nb_lignes = UBound(s) + 1
i = cellule.Row ' numéro de ligne de la plage
Cells(i, "C").Resize(, nb_lignes).Value = xl.Transpose(xl.Transpose(s))
Next cellule
End Sub
pijaku
- Messages postés
- 12247
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 10 février 2021
Petite modif ddu code de Thev (au cas ou il y a dans une même cellule 2 passages à la ligne) :
Et avec les données à la suite en colonne C :
Sub dissocier() Dim xl As Excel.Application Dim cellule As Range Dim nb_lignes As Integer, i As Long Dim s() As String Set xl = Application For Each cellule In Columns("B").SpecialCells(xlCellTypeConstants) s = Split(cellule, Chr(10)) nb_lignes = UBound(s) + 1 i = cellule.Row ' numéro de ligne de la plage Cells(i, "C").Resize(, UBound(s) + 1).Value = xl.Transpose(xl.Transpose(s)) Next cellule End Sub
Et avec les données à la suite en colonne C :
Sub MachinTruc() Dim DL As Long, DLB As Long, Lig As Long, s As Variant, i As Byte DL = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row DLB = 2 ' ==> 1ère ligne de restitution colonne C 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(DLB, 3).Value = s(i) DLB = DLB + 1 Next i Else Cells(DLB, 3).Value = Cells(Lig, 2) DLB = DLB + 1 End If Next Lig End Sub
pijaku
- Messages postés
- 12247
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 10 février 2021
- Messages postés
- 1769
- Date d'inscription
- lundi 7 avril 2008
- Statut
- Membre
- Dernière intervention
- 15 juin 2020
Cela dit, mon code met bien les données à la suite, de la colonne C à la colonne C+n
Oui thev.
J'ai bien vu ça...
A++
Oui thev.
J'ai bien vu ça...
A++
Est-il possible de mettre le contenu des lignes l'une à la suite des autres et non en changeant de colonne ?
Regarde la solution de Thev (salutations au passage).