Ajouter des lignes à la suite
Bonjour,
Je voudrais savoir quel est l'exemple de commande pour que je copie une ligne d'une feuille à une autre feuille et que les lignes s'ajoute à la suite donc à la ligne 1 puis la seconde à la ligne 2 etc
Merci
Hello,
Un exemple : Copie de la ligne 4 de la feuille "recap" vers la première ligne vide (colonne A) de la feuille "final"
Sub test2()
Dim lastline As Integer
lastline = Sheets("final").Range("A65536").End(xlUp).Row + 1
Sheets("recap").Cells(4, 1).EntireRow.Copy
Sheets("final").Select
Sheets("final").Cells(lastline, 1).EntireRow.Select
ActiveSheet.Paste
End SubMerci de votre réponse,
J'essaye de comprendre et dans mon programme j'ai fais ça :
derniereligne = ws3.Range("A:E").End(xlUp).Row + 1
et
ws1.Range("A" & i & ":E" & i).Copy ws3.Range("A" & derniereligne & ":E" & derniereligne)
Mais du coup quand il me colle la ligne il la colle toujours sur la ligne 2, j'arrive pas à ajouter la nouvelle copie et à la coller a la ligne suivante.
Merci
Bonjour à tous,
Le code de Rag02700 moins les "Select" ...
Un essai ...
Sub test2()
Dim lastline As Integer
lastline = Sheets("final").Range("A65536").End(xlUp).Row + 1
Sheets("recap").Cells(4, 1).EntireRow.Copy Sheets("final").Cells(lastline, 1)
End Subric
Je n'arrive pas à adapter avec mon programme :
En gros je voudrais que si l'ID a été modifié qu'il copié la ligne avant et la colle dans la feuille historique
Sub Meca()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim wb1 As Workbook, wb2 As Workbook
Dim lines1 As Long, lines2 As Long, compt As Long
Dim i As Long, j As Long
Dim doublon As Boolean, modif As Boolean
'~~> Classeur A
Set wb1 = ThisWorkbook
Set ws1 = wb1.Sheets("Essais Meca")
' On ouvre le classeur B
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\essais-meca.xlsx")
Set ws2 = wb2.Sheets("Feuil1")
' Nombre de lignes des classeurs A et B
lines1 = ws1.Cells(Rows.Count, 2).End(xlUp).Row
lines2 = ws2.Cells(Rows.Count, 2).End(xlUp).Row
compt = lines1
' S'il s'agit d'un nouvel ID, on l'ajoute au classeur A
For i = 1 To lines2 ' Classeur B
doublon = False
For j = 1 To lines1 ' Classeur A
If ws1.Cells(j, 1) = ws2.Cells(i, 1) Then
doublon = True
Exit For
End If
Next j
If doublon = False Then
compt = compt + 1
ws2.Range("A" & i & ":E" & i).Copy Destination:=ws1.Range("A" & compt & ":E" & compt)
End If
Next i
' Si l'ID existe on vérifie si la ligne a été modifiée
For i = 1 To lines2 ' Classeur B
For j = 1 To lines1 ' Classeur A
If ws1.Cells(j, 1) = ws2.Cells(i, 1) Then
modif = False
For k = 1 To 5
If ws1.Cells(j, k) <> ws2.Cells(j, k) Then
modif = True
Exit For
End If
Next
End If
Next j
If modif = True Then
For k = 1 To 5
ws2.Range("A" & i & ":E" & i).Copy Destination:=ws1.Range("A" & i & ":E" & i)
Next k
End If
Next i
End Sub
Merci de votre aide
Bonjour,
Il serait bon que tu places ton code sous balise ( voir le bouton </> ) > c'est plus agréable à lire ...
Un essai ...
Sub Meca()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim wb1 As Workbook, wb2 As Workbook
Dim lines1 As Long, lines2 As Long, compt As Long
Dim i As Long, j As Long
Dim doublon As Boolean
Dim K As Byte
Application.ScreenUpdating = False
'~~> Classeur A
Set wb1 = ThisWorkbook
Set ws1 = wb1.Sheets("Essais Meca")
' On ouvre le classeur B
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\essais-meca.xlsx")
Set ws2 = wb2.Sheets("Feuil1")
wb1.Activate
' Nombre de lignes des classeurs A et B
lines1 = ws1.Cells(Rows.Count, "B").End(xlUp).Row
lines2 = ws2.Cells(Rows.Count, "B").End(xlUp).Row
' S'il s'agit d'un nouvel ID, on l'ajoute au classeur A
For i = 1 To lines2 ' Classeur B
doublon = False
For j = 1 To lines1 ' Classeur A
If ws1.Cells(j, "B") = ws2.Cells(i, "B") Then
doublon = True
Exit For
End If
Next j
If doublon = False Then
compt = ws1.Cells(Rows.Count, "B").End(xlUp).Row + 1
ws2.Range("A" & i & ":E" & i).Copy Destination:=ws1.Range("A" & compt & ":E" & compt)
End If
Next i
' Si l'ID existe on vérifie si la ligne a été modifiée
For i = 1 To lines2 ' Classeur B
For j = 1 To lines1 ' Classeur A
If ws1.Cells(j, "B") = ws2.Cells(i, "B") Then
For K = 1 To 5
If ws1.Cells(j, K) <> ws2.Cells(j, K) Then
ws1.Cells(j, K) = ws2.Cells(j, K)
End If
Next
End If
Next j
Next i
End Subric