Eclater contenu d'une cellule séparée par une virgule

Bonjour tous,

je suis nouvelle sur le forum. Je viens vous demander votre aide pour finaliser une macro que j'ai pu réaliser avec des aides en ligne.

Grâce au code ci-bas, je suis arrivée à éclater le contenu de ma cellule de la colonne 11 en ligne et dupliquer le contenu des autres colonnes. Toutefois, j'ai un dernier petit souci, quand ma colonne 11 est vide, la ligne contenant celle-ci n'est pas reprise dans ma feuille de destination. Quelqu'un pourrait-il m'aider à améliorer ce code???

Sub EclaterHsenligne()
Dim C As Range, Tabl, Plage As Range, Ligne As Long
    With Sheets("Worklogs")
        Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
    End With
    With Sheets("My data")
        For Each C In Plage
            Tabl = Split(C.Offset(, 11), ";")
            .[A:C].NumberFormat = "@"
            For i = 0 To UBound(Tabl)
                Ligne = Ligne + 1
                .Range(.Cells(Ligne, 1), .Cells(Ligne, 11)).Value = C.Resize(, 11).Value
                .Cells(Ligne, 12) = Tabl(i)
                .Range(.Cells(Ligne, 13), .Cells(Ligne, 44)).Value = C.Offset(0, 12).Resize(, 32).Value
            Next i
        Next C
        .[H:H].EntireColumn.AutoFit
    End With
'
End Sub

Merci bien

Bonjour,

à tester

Sub EclaterHsenligne()
    Dim C As Range, Tabl, Plage As Range, Ligne As Long
    With Sheets("Worklogs")
        Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
    End With
    With Sheets("My data")
        For Each C In Plage
            Tabl = Split(C.Offset(, 11), ";")
            .[A:C].NumberFormat = "@"
            If UBound(Tabl) = -1 Then
                Ligne = Ligne + 1
                .Range(.Cells(Ligne, 1), .Cells(Ligne, 11)).Value = C.Resize(, 11).Value
                .Cells(Ligne, 12) = ""
                .Range(.Cells(Ligne, 13), .Cells(Ligne, 44)).Value = C.Offset(0, 12).Resize(, 32).Value
            Else
                For i = 0 To UBound(Tabl)
                    Ligne = Ligne + 1
                    .Range(.Cells(Ligne, 1), .Cells(Ligne, 11)).Value = C.Resize(, 11).Value
                    .Cells(Ligne, 12) = Tabl(i)
                    .Range(.Cells(Ligne, 13), .Cells(Ligne, 44)).Value = C.Offset(0, 12).Resize(, 32).Value
                Next i
            End If
        Next C
        .[H:H].EntireColumn.AutoFit
    End With
    '
End Sub

Merci pour ta réponse,

Je teste tout de suite, la macro dure près de 20mn, je te tiens au courant.

Bonjour

Bizarrement, j'ai le résultat que je voulais mais ça a affiché erreur sur la ligne

If UBound(Tabl) = -1 Then

Merci beaucoup pour ton aide

Rechercher des sujets similaires à "eclater contenu separee virgule"