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 Sub

Merci 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 Sub

ric

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 Sub

ric

Rechercher des sujets similaires à "ajouter lignes suite"