Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
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

8 réponses

Avatar
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" a écrit dans le message de news:
%
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



Avatar
LSteph
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,



Avatar
François
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" a écrit dans le message de news:

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" a écrit dans le message de news:
%
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







Avatar
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



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


"LSteph" a écrit dans le message de news:

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





Avatar
LSteph
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




Avatar
JB
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" wrote:
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


Avatar
François
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" a écrit dans le message de news:
%
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