Bonjour Ryadh, bonjour le forum,
L'erreur venait de la définition de la ligne... Ton code aurait fonctionné si le tableau contenait déjà une ou plusieurs paies...
Essaie comme ça (code simplifié) :
Sub Archiver()
Dim HP As Worksheet
Dim P As Worksheet
Dim LI As Long
Set HP = Worksheets("Historique_Paie")
Set P = Worksheets("Paie")
LI = HP.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1'on part de la fin et on remonte à la première ligne éditée plus une
HP.Range("A" & LI).Value = P.Range("b3").Value
HP.Range("b" & LI).Value = P.Range("b4").Value
HP.Range("c" & LI).Value = P.Range("c1").Value
HP.Range("d" & LI).Value = P.Range("b6").Value
HP.Range("e" & LI).Value = P.Range("b7").Value
HP.Range("f" & LI).Value = P.Range("d7").Value
HP.Range("g" & LI).Value = P.Range("d8").Value
HP.Range("h" & LI).Value = P.Range("d9").Value
HP.Range("f" & LI).Value = P.Range("d7").Value
HP.Range("g" & LI).Value = P.Range("d8").Value
HP.Range("h" & LI).Value = P.Range("d9").Value
HP.Range("i" & LI).Value = P.Range("d10").Value
HP.Range("j" & LI).Value = P.Range("d11").Value
HP.Range("k" & LI).Value = P.Range("d12").Value
HP.Range("l" & LI).Value = P.Range("d13").Value
HP.Range("m" & LI).Value = P.Range("d14").Value
HP.Range("n" & LI).Value = P.Range("d15").Value
HP.Range("o" & LI).Value = P.Range("d16").Value
HP.Range("p" & LI).Value = P.Range("d17").Value
HP.Range("q" & LI).Value = P.Range("d18").Value
HP.Range("r" & LI).Value = P.Range("d19").Value
HP.Range("s" & LI).Value = P.Range("d20").Value
HP.Range("t" & LI).Value = P.Range("d21").Value
HP.Range("u" & LI).Value = P.Range("d22").Value
HP.Range("v" & LI).Value = P.Range("d23").Value
MsgBox ("Toutes les paies sont Archivées !")
End Sub