Bonjour,
Essaie avec ce code :
Sub archiver()
Dim Plg As Range
Dim NumCde As Long, DerLig As Long
Dim DateCde As Date
With Sheets("Cdes")
If .Range("C12") = "" Then Exit Sub 'si la première cellule C12 est vide, on sort
NumCde = .Range("C6").Value: DateCde = .Range("C9") 'on enregistre le numéro de commande et la date
DerLig = .Cells(Rows.Count, "C").End(xlUp).Row 'on calcule la dernière ligne du tableau de commande
Set Plg = .Range("C12:H" & DerLig) 'on définit la plage de données
End With
With Sheets("Archives")
DerLig = .Cells(Rows.Count, "A").End(xlUp).Row + 1 'calcul de la première ligne vide
.Cells(DerLig, "C").Resize(Plg.Rows.Count, 6).Value = Plg.Value 'on recopie les valeurs de la plage (pas les formules)
.Cells(DerLig, "A").Resize(Plg.Rows.Count) = NumCde 'on copie le numéro de commande sur toutes les lignes
.Cells(DerLig, "B").Resize(Plg.Rows.Count) = DateCde 'idem pour les dates
End With
Sheets("Cdes").Range("C12:G24").ClearContents 'on vide la plage
Sheets("Cdes").Range("c6").Value = Sheets("Cdes").Range("c6").Value + 1 'on incrémente le numéro de commande
End Sub
Peut-être?
PS, modifier le nettoyage de la plage, pour garder les formules en colonne H