Bonjour,
Je n'ai pas pu m'empêcher de "complexifier" le code:
Private Sub CommandButton1_Click()
Dim ligFin As Integer
With Sheets("datas")
ligFin = .Cells(Rows.Count, 1).End(xlUp).Row
.Range(.Cells(ligFin, 1), .Cells(ligFin, 3)).Copy Sheets("datas").Cells(ligFin + 1, 1)
End With
End Sub
Je stocke le numéro de la dernière ligne remplie dans une variable pour la réutiliser ensuite, elle est de type Integer.
J'utilise With Sheets("datas") pour ne pas avoir à répéter ça partout. Quand j'écris
.Cells(Rows.Count, 1).End(xlUp).Row
Dans With ... End With, ça équivaut à
Sheets("datas").Cells(Rows.Count, 1).End(xlUp).Row
Enfin, le principal souci c'était la copie d'une Cells qui représente une seule cellule, je l'ai remplacé par Range qui peut représenter une plage contenant plusieurs cellules, je lui ai donné la cellule de départ, et la cellule de fin, la plage étant l'ensemble des cellules entre le départ et la fin.
J'ai aussi modifié la définition de la cellule où on copie la donnée en réutilisant la variable ligFin à laquelle j'ajoute 1 pour avoir la ligne en dessous.