Comment identifier la dernier cellule saisie au milieu d'un tableau

J'ai un tableau avec de nombreuses données saisies et de nombreux calculs.

je veux pouvoir identifier en VBA la cellule où on vient de saisir une donnée (un pourcentage) dans une "colonne particulière" pour demander la saisie d'un commentaire obligatoire (qui sera stocké ailleurs). Mais les événements de la feuille ("Change", "Selectionchange", "Calculate, ...) ne se déclenche qu’après que l'on ait quitté la cellule de saisie.

Avec l'événement Change ou Calculate je peux identifier que l'on a saisi une donnée mais pas exactement où on l'a saisie.

Si on a fait une Saisie et [Entrée] on est sur la ligne suivante, si on a fait une Saisie et [Tab] on est dans la colonne suivante, si on s'est directement positionné ailleurs en fin de saisie (avec la souris) ... ?

Merci de votre aide s'il y a une solution.

Bonjour

Non l'événement Change se produit à la saisie. Il est donc très facile de s'intercaler pour agir : éventuellement stocker la donnée, rétablir l'ancienne...

Change se produit sur Target donc cellule(s) identifiable(s)

J’espérais effectivement que l'événement "Change" s’exécute avant changement de cellule.
j'ai donc écrit le code suivant pour vérifier :
Private Sub Worksheet_Change(ByVal Target As Range)

' sauvegarde de la colonne et de la Ligne de saisie
l_Col = ActiveCell.Column
l_Lig = ActiveCell.Row

' sauvegarde de la valeur saisie dans la cellule sous forme de %

l_Valeur = Format(ActiveCell.Value, "#00.00 %")
...

Mais le numéro de la ligne (l_Lig) correspond à la ligne en dessous de la cellule de saisie.
Le contenu de la cellule active (L_Valeur) correspond également à la cellule du dessous (Vide).

Le problème c'est que si en fin de saisie on utilise la touche [Tab] on renvoie la cellule de droite de la cellule de saisie (et pas celle du dessous)
ou que l'on utilise la souris on renvoie alors n'importe quelle cellule. Impossible donc d'identifier de façon sure la cellule de saisie utilisée.

Je travaille avec Excel 2010. La différence vient elle de cette version ? (j'en doute un peu)

Bonjour,

Essaie ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim l_Col As Long, l_Lig As Long, l_Valeur As String
    With Target
        l_Col = .Column
        l_Lig = .Row
        l_Valeur = Format(.Value, "#00.00 %")
    End With
End Sub

Bonjour

Pour compléter la réponse de Jean-Eric, toujours se méfier de Active... : ActiveWorkbook, ActiveSheet, ActiveCell

Il faut des repères plus fiables : ici Target comme je l'avais indiqué

Bonjour,

C'est vrai que le "With Target" (que je ne connaissais pas) est miraculeux.

MERCI ENCORE C'EST PARFAIT.

(je ne sais pas comment faire pour classer le sujet en résolu à moins que ce soit déjà le cas)

Rechercher des sujets similaires à "comment identifier dernier saisie milieu tableau"