Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Address <> "$A$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en A1, sort de la procédure
If Range("C1").Value = "" Then 'condition : si C1 est vide
Range("C1").Value = Range("A1").Value 'ci prend la valeur de A1
Else 'sinon
Range("C65536").End(xlUp).Offset(1, 0).Value = Range("A1").Value 'la première cellule vide en C prend la valeur de A1
End If 'fin de la condition
End Sub