J'essaie de mettre à jour une feuille ("EditEx") avec les données d'une feuille de registre ("TK_Register") après l'application d'un filtre basé sur le numéro de référence. Il n'y aurait pas plus de 20 lignes.

Mon problème est lié au copier-coller.

Si les données à copier se trouvent dans les 20 premières lignes, elles copient et collent les données, mais copient également les lignes vides jusqu'à la ligne 21 (comme défini dans ma plage DBExtract).

Si les données à copier se trouvent après les 20 premières lignes, j'obtiens une erreur 1004. Le filtre trouve qu'il y a des données mais mon code de copie ne regarde que les 20 premières lignes.

Comment puis-je faire fonctionner les lignes filtrées par copie SANS copier également les lignes vides (ce qui se produit également si je définis ma plage de copie sur "A: K")? Merci

    Sub UpdateInputWithExisting()

    ActiveCell.Offset(0, 1).Select
    Set RefID = ActiveCell

    Sheets("TK_Register").Range("A1:N1000").AutoFilter field:=12, Criteria1:=RefID

    Dim DbExtract, DuplicateRecords As Worksheet
    Set DbExtract = ThisWorkbook.Sheets("TK_Register")
    Set DuplicateRecords = ThisWorkbook.Sheets("EditEx")

    DbExtract.Range("A2:K21").SpecialCells(xlCellTypeVisible).copy
    DuplicateRecords.Cells(32, 3).PasteSpecial xlPasteValues
    On Error Resume Next
    Sheets("TK_Register").ShowAllData
    On Error GoTo 0

    ActiveWorkbook.RefreshAll
    Sheets("EditEx").Select
    Range("B13").Select

    MsgBox ("Record Retrieved. Make your changes and ensure you click 'Save Changes' to update the Master Registers")

    End Sub
0
Chade 4 nov. 2019 à 05:55

1 réponse

je vous recommande de modifier les deux lignes suivantes en (étant donné que votre feuille n'a pas de données adjacentes à votre table):

Sheets("TK_Register").Range("A1").CurrentRegion.AutoFilter field:=12, Criteria1:=RefID 

Et ça:

DbExtract.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).copy
0
SNicolaou 4 nov. 2019 à 05:11