2017-08-16 2 views
2

Je travaille actuellement sur un projet où je dois copier une plage ciblée dans un classeur et la coller dans un autre classeur en omettant toutes les cellules vides (dont il y en a beaucoup). Jusqu'à présent, j'ai réussi à les coller ensemble les uns à côté des autres, mais je n'ai pas réussi à les structurer de manière appropriée.Suppression des cellules vides et structuration des données lors de la copie VBA

 For Each c In rngSourceRange.SpecialCells(xlCellTypeVisible) 
      If Len(c) <> 0 Then 
       rngDestination = c.Value 
       Set rngDestination = rngDestination.Offset(0, 1) 
      End If 
     Next c 

     Application.CutCopyMode = False 

Le format doit être tel quel. Les 19 premières cellules doivent être alignées les unes à côté des autres. Ensuite, il faut descendre d'une rangée pour revenir à la première colonne et répertorier les 19 prochaines entrées, et ainsi de suite jusqu'à ce que je sois complètement hors de mes cellules. Maintenant, j'ai essayé d'inclure une autre boucle, mais cela a produit un résultat très inutile.

 For Each c In rngSourceRange.SpecialCells(xlCellTypeVisible) 
      If Len(c) <> 0 Then 
      For lcol = 1 To 19 
       wkbCrntWorkBook.Sheets("Tabelle1").Cells(lrow, lcol).Value = c.Value 
       lrow = lrow + 1 
      Next lcol 
      End If 
     Next c 

     Application.CutCopyMode = False 

Aidez-moi à structurer cet ensemble de données correctement. Je peux montrer le reste de mon code si cela peut aider.

Répondre

1

En vous premier code, après cette déclaration:

Set rngDestination = rngDestination.Offset(0, 1) 

Essayez d'ajouter la déclaration suivante:

If rngDestination.Column > 19 Then _ 
    Set rngDestination = rngDestination.EntireRow.Offset(1).Cells(1)