Je suis nouveau sur VBA ... Je souhaite copier une ligne de Sheet2 vers Sheet1 si la première cellule de cette ligne indique X, puis le faire pour toutes les lignes qui répondent à ce critère. J'ai une erreur dans la condition If ... Je ne sais pas comment y remédier.
Sub LastRowInOneColumn()
'Find the last used row in a Column: column A in this example
Worksheets("Sheet2").Activate
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
MsgBox (LastRow)
For i = 1 To LastRow
If Worksheet.Cells(i, 1).Value = "X" Then
ActiveSheet.Row.Value.Copy _
Destination:=Hoja1
End If
Next i
End Sub
Vous devez spécifier workseet. Changer de ligne
If Worksheet.Cells(i, 1).Value = "X" Then
à
If Worksheets("Sheet2").Cells(i, 1).Value = "X" Then
UPD:
Essayez d'utiliser le code suivant (mais ce n'est pas la meilleure approche. Comme l'a suggéré @SiddharthRout, pensez à utiliser Autofilter ):
Sub LastRowInOneColumn()
Dim LastRow As Long
Dim i As Long, j As Long
'Find the last used row in a Column: column A in this example
With Worksheets("Sheet2")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
MsgBox (LastRow)
'first row number where you need to paste values in Sheet1'
With Worksheets("Sheet1")
j = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
For i = 1 To LastRow
With Worksheets("Sheet2")
If .Cells(i, 1).Value = "X" Then
.Rows(i).Copy Destination:=Worksheets("Sheet1").Range("A" & j)
j = j + 1
End If
End With
Next i
End Sub
Après avoir formaté la réponse précédente à mon propre code, j'ai trouvé un moyen efficace de copier toutes les données nécessaires si vous essayez de coller les valeurs renvoyées via AutoFilter
sur une feuille séparée.
With .Range("A1:A" & LastRow)
.Autofilter Field:=1, Criteria1:="=*" & strSearch & "*"
.Offset(1,0).SpecialCells(xlCellTypeVisible).Cells.Copy
Sheets("Sheet2").activate
DestinationRange.PasteSpecial
End With
Dans ce bloc, AutoFilter
recherche toutes les lignes qui contiennent la valeur de strSearch
et filtre toutes les autres valeurs. Il copie ensuite les cellules (en utilisant l'offset en cas d'en-tête), ouvre la feuille de destination et colle les valeurs dans la plage spécifiée sur la feuille de destination.