Split Cell dans Excel 2007

J'ai un énorme file Excel (2 Mo) qui contient plusieurs lignes de données dans une cellule. Voir la capture d'écran pour plus de détails. J'ai peu de chance d'essayer de les split en lignes. J'utilise ce script VB que j'ai reçu d'une autre publication ici sur Stackoverflow. Lorsque je l'exécute sur des colonnes individuelles, l'application se bloque. Existe-t-il un moyen de split les cellules dans chaque colonne dans sa propre rangée?

Sub JustDoIt() 'working for active sheet 'copy to the end of sheets collection ActiveSheet.Copy after:=Sheets(Sheets.Count) Dim tmpArr As Variant Dim Cell As Range For Each Cell In Range("C1", Range("C2").End(xlDown)) If InStr(1, Cell, Chr(10)) <> 0 Then tmpArr = Split(Cell, Chr(10)) Cell.EntireRow.Copy Cell.Offset(1, 0).Resize(UBound(tmpArr), 1). _ EntireRow.Insert xlShiftDown Cell.Resize(UBound(tmpArr) + 1, 1) = Application.Transpose(tmpArr) End If Next Application.CutCopyMode = False End Sub 

entrez la description de l'image ici

Toute aide est très appréciée et merci d'avance.

Si je comprends bien votre question, vous pouvez résoudre ce problème en procédant comme suit:

  1. Immergez les cellules fusionnées.

  2. Disons, par exemple, que la colonne que vous essayez de modifier est la colonne A. Insérez une nouvelle colonne à droite de la colonne A. Ensuite, utilisez la formule suivante:

    = IF (A2 <> "", A2, B1)

L'application de cette formule à la baisse devrait vous donner le format souhaité.

La macro semble viable par programme. Toutefois, il pourrait être bloqué car il y a trop de données sur votre fin. Je pense que la meilleure façon de le faire est de créer un sous-programme à partir de ce qui précède, et de l'appeler un par un sur vos cellules. Voir ma tentative ci-dessous.

Code:

 Sub SplitLine(SrcRng As Range, TargetRng As Range) StrToSplit = SrcRng.Value If InStr(1, StrToSplit, Chr(10)) Then SplitArr = Split(StrToSplit, Chr(10)) With TargetRng .Resize(UBound(SplitArr) + 1, 1).Value = Application.Transpose(SplitArr) End With End If End Sub 

Compte tenu des données suivantes:

entrez la description de l'image ici

J'appellerai le code ci-dessus comme suit:

 Sub Test() Dim SourceSh As Worksheet, TargetSh As Worksheet Dim SourceRng As Range, CellRng As Range Dim TargetRng As Range With ThisWorkbook Set SourceSh = .Sheets("Sheet3") Set TargetSh = .Sheets("Sheet4") End With Set SourceRng = SourceSh.Range("A1:D1") Set TargetRng = TargetSh.Range("A1") Application.ScreenUpdating = False For Each CellRng In SourceRng SplitLine CellRng, TargetRng Set TargetRng = TargetRng.Offset(0, 1) Next Application.ScreenUpdating = True End Sub 

Le résultat est le suivant:

entrez la description de l'image ici

Faites-nous savoir si cela vous aide.