Private Sub Worksheet_Change(ByVal Target As Range)
'contrôle que c'est bien la colonne 3 que la saisie est bien un chiffre de 1 à 39
If Target.Column <> 3 Then Exit Sub
If Not IsNumeric(Target.Value) Or Target.Value < 1 Or Target.Value > 39 Then
MsgBox ("Saisir un chiffre de 1 à 39")
Exit Sub
End If
Dim lig As Integer, i As Integer, l As Integer
l = Target.Row 'défini la ligne en cours
lig = Target.Value + 19 'défini la ligne correspondante
For i = 3 To 43 'boucle sur les colonnes
'si la cellule n'est pas vide copie la cellule
If Len(Cells(lig, i).Value) > 0 Then Cells(l, i).Value = Cells(lig, i).Value
Next 'fin de boucle
End Sub