Worksheet_Change - Changement vs delete

Bonjour à tous sur le forum,

Petit problème surement simple. Si l'utilisateur modifier une cellule dans une ligne, la cellule de la colonne C de cette même ligne met la date du jour.

Mon problème, la référence de la cellule s'inscrit une fois le "enter" fait donc 2 plus bas. Pas contre si l'utilisateur fait "delete", la valeur ne bouge pas, donc devrait-être seulement

a = ActiveCell.Row - 1

Voici mon code :

a = ActiveCell.Row - 2

Range("A1").Select

ActiveCell.Offset(a, 2).Select

Selection = Date

J'espère que je suis clair.

Merci beaucoup pour votre aide et bonne journée !

Bonjour,

pas forcément très clair, cela mériterait un fichier

je pense qu'il faudrait alors lier les lignes avec une formule de type =LIGNE(la_reference)

En fait, je prends la référence de la cellule modifiée qui s'active par le changement.

Donc si je modifie B2 et je fais "enter" la référence devient B3, car le "enter" fais descendre la selection.

Mais je fais delete (clearcontents), je reste sur B2.
J'ai besoin dans ma référence de rester sur B2.

Est-ce plus clair? Sinon, je vais faire un petit fichier.

Merci pour ton temps !

Salut vinc,
Salut Steelson,

Comme l'impression que tu cherches midi, non pas à 14:00 mais à minuit...

En fait, je vois qu'il manque le code de la feuille pour mieux comprendre :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("list_prog2")) Is Nothing Then

Dim a As Integer

a = ActiveCell.Row

Donc si je modifie A1 et que je fais "enter" ,

a = 2, car je me retrouve en A2

Si je fais Tab

a = 1 car je me retrouve en B1

Je veux retrouver mon A1!

Merci encore !

En fait, je vois qu'il manque le code de la feuille pour mieux comprendre :

... et un bout de feuille aussi, cela pourrait aider !

Bonjour à tous,

J'espère que vous avez passé un bon WE. Voici un exemple de fichier.

Merci encore pour votre aide et bonne journée !

Vincent

essaie ceci

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("list_2")) Is Nothing Then
    Application.ScreenUpdating = False
    Cells(Target.Row, 3) = Date
    Application.ScreenUpdating = True
End If
End Sub

Merci beaucoup Steelson. Cela fonctionne.

Juste pour bien comprendre, c'est le target qui fait la différence?

Merci encore

Ton problème était a = ActiveCell.Row qui prenait comme référence la nouvelle cellule après validation, donc celle en dessous de target quand tu fais entrée, et celle à droite quand tu fais tab. Il fallait prendre comme référence la ligne de target. Le reste c'est de la simplification de code.

Rechercher des sujets similaires à "worksheet change changement delete"