Re,
Et pour être plus propre avec des variables initialisées
Sub Archiver()
Dim ligne As Integer
Dim Ws As Worksheet, Wd As Worksheet
Set Ws = Sheets("Facture")
Set Wd = Sheets("Historique_Factures")
ligne = Wd.Range("A" & Rows.Count).End(xlUp).Row + 1
Wd.Range("A" & ligne).Value = Ws.Range("D6").Value
Wd.Range("B" & ligne).Value = Ws.Range("D7").Value
Wd.Range("C" & ligne).Value = Ws.Range("C12").Value
Wd.Range("D" & ligne).Value = Ws.Range("C13").Value
Wd.Range("E" & ligne).Value = Ws.Range("C14").Value
Wd.Range("F" & ligne).Value = Ws.Range("D31").Value
Ws.Range("A20:B26,C12:D12,C29,D33").ClearContents
Ws.Range("D6").Value = Ws.Range("D6").Value + 1
End Sub