Cela devrait être simple, mais je vis un moment difficile. Je veux copier les cellules A3 à E3 et les coller dans la ligne suivante de la feuille de calcul. J'ai utilisé ce code auparavant dans de plus longues chaînes de code .. mais je devais le modifier et il ne fonctionne pas cette fois. Je reçois une "erreur définie par l'application ou par l'objet" lorsque j'exécute le code présenté ci-dessous. Toute aide est appréciée.
Private Sub CommandButton1_Click()
Dim lastrow As Long
lastrow = Range("A65536").End(xlUp).row
Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A:A" & lastrow)
End Sub
Faites attention avec "Range (...)" sans d'abord qualifier une feuille de calcul, car elle utilisera la feuille de calcul actuellement active pour en faire la copie. Il est préférable de qualifier pleinement les deux feuilles. S'il vous plaît donner à cela une chance (s'il vous plaît changer "Sheet1" avec la feuille de calcul):
EDIT: édité pour coller des valeurs uniquement en fonction des commentaires ci-dessous.
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Set copySheet = Worksheets("Sheet1")
Set pasteSheet = Worksheets("Sheet2")
copySheet.Range("A3:E3").Copy
pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
La raison pour laquelle le code ne fonctionne pas, c'est parce que lastrow est mesuré à partir de la feuille active, et que "A: A500" (ou un autre numéro) n'est pas une référence de plage valide.
Private Sub CommandButton1_Click()
Dim lastrow As Long
lastrow = Sheets("Summary Info").Range("A65536").End(xlUp).Row ' or + 1
Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A" & lastrow)
End Sub
Ci-dessous, le code qui fonctionne bien, mais mes valeurs se chevauchent dans la feuille "Final" à chaque fois que la condition de <=11
se rencontre dans la feuille "Calculatrice"
Je voudrais que vous me aidiez à modifier le code pour que le curseur passe à la cellule vide suivante et que les valeurs s’ajoutent comme une liste.
Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Calculator")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Final")
For i = 2 To ws1.Range("A65536").End(xlUp).Row
If ws1.Cells(i, 4) <= 11 Then
ws2.Cells(i, 1).Value = Left(Worksheets("Calculator").Cells(i, 1).Value, Len(Worksheets("Calculator").Cells(i, 1).Value) - 0)
ws2.Cells(i, 2) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:D"), 4, False)
ws2.Cells(i, 3) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:E"), 5, False)
ws2.Cells(i, 4) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:B"), 2, False)
ws2.Cells(i, 5) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:C"), 3, False)
End If
Next i
Vous pouvez aussi essayer ceci
Private Sub CommandButton1_Click()
Sheets("Sheet1").Range("A3:E3").Copy
Dim lastrow As Long
lastrow = Range("A65536").End(xlUp).Row
Sheets("Summary Info").Activate
Cells(lastrow + 1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub