Comment récupérer la valeur d'une cellule avant changement dans une macro évenemetielle ...

Le
François
Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Change).
Est-il possible de récupérer dans la macro évènementielle, la valeur
"oiseau" avant le changement par un autre choix sur la liste de validation ?

Merci à tous

François
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JP25
Le #4903261
Bonjour,
Tu peux ajouter cette private sub dans ta feuille
Tu fais un double click sur ta cellule

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Db = ActiveCell.Value
MsgBox "Ancienne valeur :" & Db & " (Remplace le msgbox par une
destination de cells ou tu veux stocker ta valeur)"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'ta macro
End Sub
--
Cordialement
JP25


"François" %
Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Change).
Est-il possible de récupérer dans la macro évènementielle, la valeur
"oiseau" avant le changement par un autre choix sur la liste de validation
?

Merci à tous

François



LSteph
Le #4903251
Bonjour,
Une possibilité serait plutôt de tenir une autre feuille cachee
par exemple , historisation des une ou deux dernières valeurs.
Exemple dans vbe explorateur de projet j'ai nommé "cachee" une feuille
via la fenêtre des propriétés et je l'ai mise en xlveryhidden.

http://cjoint.com/?hik25hUhfv

'''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range
Set isect = Intersect(Target, [b2])
If isect Is Nothing Then Exit Sub
Application.EnableEvents = False
cachee.[a65536].End(xlUp)(2) = [b2]
[a2] = cachee.[a65536].End(xlUp).Offset(-1)
Do While cachee.[a65536].End(xlUp).Row > 5
cachee.Rows(1).Delete
Loop
Application.EnableEvents = True
End Sub
'''''''''''''''''''''''''''''''''''''



Est-il possible de récupérer dans la macro évènementielle,
la valeur
"oiseau" avant le changement par un autre choix sur la liste de
validation ?


....Worksheet_Change. intervient lorsqu'il y a eu un changement effectué
par l'utilisateur

Cordialement.

lSteph

Bonjour à tous,



François
Le #4903241
Bonjour JP25,

Sauf erreur, cela m'oblige à double cliquer la cellule avant d'en changer la
valeur, ce qui alourdit la saisie ...
Ce que j'essayais de faire, c'était de récupérer l'ancienne valeur sans
manipulation supplémentaire !

Merci pour ton aide

François

"JP25"
Bonjour,
Tu peux ajouter cette private sub dans ta feuille
Tu fais un double click sur ta cellule

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Db = ActiveCell.Value
MsgBox "Ancienne valeur :" & Db & " (Remplace le msgbox par une
destination de cells ou tu veux stocker ta valeur)"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'ta macro
End Sub
--
Cordialement
JP25


"François" %
Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Change).
Est-il possible de récupérer dans la macro évènementielle, la valeur
"oiseau" avant le changement par un autre choix sur la liste de
validation ?

Merci à tous

François







LSteph
Le #4903211
Bonjour JP25,

Si je peux me permettre et sauf erreur d'interpretation du sujet:

une validation utilise le bouton dropdown.

Dans un autre contexte ton idée est bonne si l'utilisateur s'astreint à
Tu fais un double click sur ta cellule



A noter toutefois que pour accèder à une cellule il n'est pas nécessaire
d'effectuer un doubleclic.
(Surtout si comme moi on travaille sans l'option modification directe)

AmiCordialement.

lSteph


Bonjour,
Tu peux ajouter cette private sub dans ta feuille
Tu fais un double click sur ta cellule

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Db = ActiveCell.Value
MsgBox "Ancienne valeur :" & Db & " (Remplace le msgbox par une
destination de cells ou tu veux stocker ta valeur)"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'ta macro
End Sub



JP25
Le #4903201
Bonjour LSteph,
J'avais zappé la validation dans le 1er post
Merci pour ta remaque
--
Cordialement
JP25


"LSteph"
Bonjour JP25,

Si je peux me permettre et sauf erreur d'interpretation du sujet:

une validation utilise le bouton dropdown.

Dans un autre contexte ton idée est bonne si l'utilisateur s'astreint à
Tu fais un double click sur ta cellule



A noter toutefois que pour accèder à une cellule il n'est pas nécessaire
d'effectuer un doubleclic.
(Surtout si comme moi on travaille sans l'option modification directe)

AmiCordialement.

lSteph


Bonjour,
Tu peux ajouter cette private sub dans ta feuille
Tu fais un double click sur ta cellule

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Db = ActiveCell.Value
MsgBox "Ancienne valeur :" & Db & " (Remplace le msgbox par une
destination de cells ou tu veux stocker ta valeur)"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'ta macro
End Sub





LSteph
Le #4903111
Bonjour,
sans
manipulation supplémentaire !
La détection de l'évennement Change n'à lieu qu'après la validation!!

Si tu veux plus direct (mais plus aléatoire), tu crée une variable si
ta validation est en Feuil1.b2 par exemple.

'en haut d'un Module Standard:

Public mavar as string

'Dans le Thisworkbook

Private Sub Workbook_Open()
mavarþuil1.[b2]
End Sub

'Dans le code de la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range
Set isect = Intersect(Target, [b2])
If isect Is Nothing Then Exit Sub
Application.EnableEvents = False
Feuil1.[a2] = mavar 'facultatif ecriture de precedente
Application.EnableEvents = True
mavar = [b2].Value
End Sub

'''''''''''''''''''''''''''''''''''''''''


Ce que j'essayais de faire, c'était de récupérer l'ancienne valeur sans
manipulation supplémentaire !


Il faut donc au minimum pouvoir la récupèrer quelquepart ,
c'est possible si elle y est déjà et selon ce que j'ai proposé
précédemment plus sûr en stockant dans des cellules que des variables.


Cordialement.

lSteph

Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Change).
Est-il possible de récupérer dans la macro évènementielle, la valeur
"oiseau" avant le changement par un autre choix sur la liste de validation ?

Merci à tous

François




JB
Le #4902931
Bonjour,


Donne l'ancienne valeur avant saisie:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
MsgBox [mémo]
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr( 34)
& Target.Value & Chr(34)
End If
End Sub

http://cjoint.com/?hiop7DX1bn

JB

On 8 juil, 08:49, "François"
Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Chang e).
Est-il possible de récupérer dans la macro évènementielle, la val eur
"oiseau" avant le changement par un autre choix sur la liste de validatio n ?

Merci à tous

François


François
Le #4902881
Merci beaucoup à tous !

Par votre aide, j'ai réussi à récupérer mon ancienne valeur pour pouvoir
exploiter le changement sur un autre tableau...

Merci encore et bonne journée (quoique fort grise au nord de la seine ...)

François

"François" %
Bonjour à tous,

Dans une cellule A1 (qui contient "oiseau" par exemple), j'ai mis une
validation et j'ai créé une macro évènementielle (Worksheet_Change).
Est-il possible de récupérer dans la macro évènementielle, la valeur
"oiseau" avant le changement par un autre choix sur la liste de validation
?

Merci à tous

François



Publicité
Poster une réponse
Anonyme