Erreur 1004 lors de l'utilisation de Range Cell

Je suis confronté à des erreurs de time d'exécution 1004 avec ce code. C'est étrange parce que ce code a fonctionné dans un autre module, mais lorsque je l'ai placé dans une feuille de formulaire user, cela ne fonctionne pas.

J'ai trouvé le problème sur cette ligne lors de l'utilisation de points d'arrêt

Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol), Cells(LastRow, FindCol)) 

J'ai étudié et essayé tout comme

 Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow) Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow, LastCol) With WorkBk.Worksheets(1) .Range(.Cells(FindRow + 2, FindCol), .Cells(FindRow + 2, FindCol)) End With 

Et aucun ne semblait fonctionner. Encore une fois, ce code a déjà fonctionné sur un autre module. Je ne sais pas pourquoi il ne fonctionne pas lorsque je mets sous le button de command sous pour userform.

Aidez-nous

Code complet:

 Dim FileName As Ssortingng Dim SummarySheet As Worksheet Dim WorkBk As Workbook Dim FolderPath As Ssortingng Dim LastRow As Long Dim LastCol As Long Dim NRow As Long Dim NCol As Long Dim SourceRange As Range Dim DestRange As Range ' Create a new workbook and set a variable to the first sheet. Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1) ' Set Worksheet Name ActiveSheet.Name = "BTS1 DL_HARQ" ' Call Dir the first time, pointing it to all Excel files in the folder path. FileName = Dir(FolderPath & "*BTS1_PHYMAC(DL_HARQ).csv*") ' Initialize column to 1 NCol = 1 ' Loop until Dir returns an empty ssortingng. Do While FileName <> "" ' NRow keeps track of where to insert new rows in the destination workbook. NRow = 1 ' Open a workbook in the folder Set WorkBk = Workbooks.Open(FolderPath & FileName) ' Set the cell in row 1 to be the file name. SummarySheet.Cells(1, NCol) = FileName 'Find the last row to be copyd LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 'Find the last row to be copyd LastCol = ActiveSheet.Cells(13, Columns.Count).End(xlToLeft).Column ' Set the source range to be K14 to last row ' Modify this range for your workbooks. ' It can span multiple rows. ' Set SourceRange = WorkBk.Worksheets(1).Range("K14:K" & Lastrow) Dim rFind As Range Dim ColCount As Long Dim FindRow As Long Dim FindCol As Long For ColCount = 1 To LastCol With Range(Cells(1, ColCount), Cells(LastRow, ColCount)) Set rFind = .Find(What:="Tx Throughput [kbps]", LookIn:=xlValues, LookAt:=xlWhole) If Not rFind Is Nothing Then FindRow = rFind.Row FindCol = rFind.Column End If End With Next ColCount Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol), Cells(LastRow, FindCol)) ' Set the destination range to start at row 2 and ' be the same size as the source range. Set DestRange = SummarySheet.Cells(NRow + 1, NCol) Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _ SourceRange.Columns.Count) ' Copy over the values from the source to the destination. DestRange.Value = SourceRange.Value ' Increase NRow so that we know where to copy data next. NRow = NRow + DestRange.Rows.Count ' Close the source workbook without saving changes. WorkBk.Close savechanges:=False ' Use Dir to get the next file name. FileName = Dir() ' Increase NCol to copy the next file on the next column NCol = NCol + 1 Loop End Sub 

Je crois que vous devez faire reference à votre feuille de calcul lors de l'utilisation de Cells:

 Set SourceRange = WorkBk.Worksheets(1).Range(WorkBk.Worksheets(1).Cells(FindRow + 2, FindCol), WorkBk.Worksheets(1).Cells(LastRow, FindCol)) 

Cela aidera beaucoup si vous créez une variable pour cette feuille de travail, rendra beaucoup plus facile à lire et à modifier.