Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("F:F"), Target) Is Nothing And Target.Value <> "" And Target.Count = 1 Then
Target.Offset(Target.Value, -1).Value = Target.Value
End If
End Sub
En fait j'ai pas bien compris sur quelle feuille je doit placer ces codes.
doit je conserver le code suivant
ou choisir entre les deux ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaVal As Integer
' Pour éviter les erreurs si selection multiple ou valeur vide alors quitter
' moi : ' Si la modification de la colonne est supérieure à 1 alors quitter
If Target.Columns.Count > 1 Then Exit Sub
' moi : si le compte de ligne cible supérieur à 1 alors quitter
If Target.Rows.Count > 1 Then Exit Sub
' moi : si la valeur est nulle dans la cible alors quitter
If Target.Value = "" Then Exit Sub
' Si saisie d'une valeur en F
' moi : Si la cellule active est dans colonne F, la procédure s'applique sinon il ne se passe rien
If Not Intersect(Range("F:F"), Target) Is Nothing Then
' Désactiver les évènements
' moi : désactiver provisoirement les évènements.
' Si vous devez par exemple écrire dans une cellule à partir d'une procédure évènementielle
' qui est déclenchée par la modification des cellules, vous allez provoquer une boucle récursive infinie.
' La propriété Application.EnableEvents = False permet de règler ce problème.
Application.EnableEvents = False
' Récupérer la valeur
MaVal = Target.Value
' A partir de la cellule modifiée, décaler de X lignes vers le bas et d'une colonne à gauche
' et inscrire la valeur
Target.Offset(MaVal, -1).Value = MaVal
' Activer les évènements
Application.EnableEvents = True
End If
End Sub