2017-07-29 1 views
2

Je travaille sur un code et tout ce que je veux faire est de copier les données d'une feuille et de les coller dans une autre feuille qui a une configuration de table.Comment copier des lignes d'une autre feuille et les coller dans une feuille contenant une table?

Mon code fait exactement ce que je veux faire mais, la table ne se redimensionne pas pour inclure toutes les lignes qui ont été copiées, seule la première ligne des données copiées va dans la table. et le reste est formaté comme non dans la table.

enter image description here

Voici comment il ressemble après que je lance le code

Sub LastRowInOneColumn() 
    Dim LastRow As Longenter image description here 
    Dim i As Long, j As Long 

    'Find the last used row in a Column 
    With Worksheets("First Page") 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 

    'first row number where you need to paste values in Sheet1' 
    With Worksheets("Report") 
    j = .Cells(.Rows.Count, "A").End(xlUp).Row '+ 1 
    End With 

    For i = 1 To LastRow 
    With Worksheets("First Page") 
     'If .Cells(i, 1).Value = "X" Then 
     .Rows(i).Copy Destination:=Worksheets("Report").range("A" & j) 
     j = j + 1 
     'End If 
    End With 
    Next i 
End Sub 
+0

Ceci est le lien à la façon dont il ressemble après l'exécution du code: https://1drv.ms/i/s!AmHyJPlVM3nVgelP63-u8zHPS-wPow Voilà comment je veux que ça ressemble à: https://1drv.ms/i/s!AmHyJPlVM3nVgelQsGfmDhO-eCtNCQ – cookiemonster

+0

Pouvez-vous formater votre table pour couvrir toute la profondeur de la feuille plutôt que seulement la rangée supérieure avant de présenter les données? – Bug

+0

J'apprécie vraiment l'aide des gars. Il fonctionne maintenant. Merci encore. – cookiemonster

Répondre

0

Habituellement, en insérant en dessous de la fin de la table fera grandir automatiquement, mais pas lors du collage d'une plage qui dépasse le nombre de colonnes dans la table. Il y a deux manières de traiter ceci:

1- limiter la plage copiée au nombre de colonnes dans la table; à savoir

.Rows(i).Resize(,4).Copy Destination:=Worksheets("Report").range("A" & j) 
'  ^^^^^^^^^^^ 

2- redimensionnement explicite la table, en utilisant la méthode ListObject.Resize; à savoir

With Sheet1.ListObjects(1) 
    .Resize .Range.Resize(.Range.Rows.count + 1) 
End With 
+1

L'option 1 fonctionnait parfaitement. Merci beaucoup – cookiemonster