Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then ' si saisie colonne B
For r = 1 To 16 ' boucle de 1 à 16
Target.Offset(0, r) = "" ' effacement de la ligne correspondant à la saisie( colonne B) de la colonne C à R
Next r ' fin de la boucle
X = Target.Value ' valeur de la saisie en colonne B
For i = 6 To 6 + X - 1 ' boucle de la colonne H (décalage de 6 colonnes par rapport à B)+ la valeur X moins 1
Target.Offset(0, i) = 1 'décalage de H à la valeur X de la valeur 1
Next i ' fin de la boucle
ElseIf Target.Column = 3 Then ' sinon si saisie colonne C
X = Target.Value ' valeur de la saisie en colonne C
For k = 5 To 15 ' boucle de la colonne H à R
If Target.Offset(0, k) = "" Then ' si le colonne décalée de 5 à 15 est vide alors
For j = k To k + X - 1 ' boucle de 5 + X - 1
Target.Offset(0, j) = 2 'décalage de H à la valeur X de la valeur 2
Next j 'fin de la boucle j
Exit For ' sortie de la boucle
Else ' sinon
Target.Offset(0, k + 1).Select ' décalage d'une colonne
End If ' fin si
Next k ' fin de la boucle k
' même principe pour colonne D E F
ElseIf Target.Column = 4 Then 'colonne D
X = Target.Value
For l = 4 To 14
If Target.Offset(0, l) = "" Then
For m = l To l + X - 1
Target.Offset(0, m) = 3
Next m
Exit For
Else
Target.Offset(0, l + 1).Select
End If
Next l
ElseIf Target.Column = 5 Then ' colonne E
X = Target.Value
For n = 3 To 13
If Target.Offset(0, n) = "" Then
For o = n To n + X - 1
Target.Offset(0, o) = 4
Next o
Exit For
Else
Target.Offset(0, n + 1).Select
End If
Next n
ElseIf Target.Column = 6 Then ' colonne F
X = Target.Value
For p = 2 To 12
If Target.Offset(0, p) = "" Then
For q = p To p + X - 1
Target.Offset(0, q) = 5
Next q
Exit For
Else
Target.Offset(0, p + 1).Select
End If
Next p
End If
End Sub