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

[VBA] détection du changment de valeur d'une cellule

8 réponses
Avatar
Nemroth
Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule Excel SVP ?

Par avance merci
--
Pour me répondre en BAL, retirer le nospam...

8 réponses

Avatar
Xav
Bonsoir Nemroth

au niveau du code de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)

.... Ta macro

End Sub

--
@+
Xav
"Nemroth" a écrit dans le message de news:

Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule Excel
SVP ?

Par avance merci
--
Pour me répondre en BAL, retirer le nospam...


Avatar
Nemroth
OK mais je souhaite détecter le changement dans une seule cellule du tableau
(mettons A1)

Je sais je sais sorry, j'l'avais pas dit au début...

Merci


Bonsoir Nemroth

au niveau du code de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)

.... Ta macro

End Sub

--
@+
Xav
"Nemroth" a écrit dans le message de news:

Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule Excel
SVP ?

Par avance merci
--
Pour me répondre en BAL, retirer le nospam...



--
Pour me répondre en BAL, retirer le nospam...


Avatar
LeSteph
Bonsoir,

1ère solution (pas terrible) ::(
En la regardant très souvent
2de solution (moyen) ;-|
En plaçant juste à côté ou une autre feuille
la même valeur qui ne change pas..
3ème solution(mieux) :-)
En plaçant dans le module de feuille
une procèdure worksheet_change:
'*****
Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address & "a changé"
End Sub
'*****
.
Pouer essayer cette procèdure:
Tu copie de '***** à '*****
tu retourne dans Excel tu appuies alt+f11
VBA s'ouvre
puis tu fais Ctrl+r
pour afficher Explorateur de projet
dblclic sur l'icône de feuil1 qui est dedans
puis tu colles cela dans le module vide qui est affiché.
Tu re fermes la fenêtre de VB.
Tu entres une valeur dans feuil1
Mais au bout d'un moment cela va ennerver!
Alors si tu veux , tu peux préciser mieux.
Exemple avec une seule cellule
'*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address & "a changé"
End If
End Sub

'****
LeSteph

"Nemroth" a écrit dans le message de
news:
Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule Excel
SVP ?


Par avance merci
--
Pour me répondre en BAL, retirer le nospam...


Avatar
Nemroth
Merci LeSteph,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address & "a changé"
End If
End Sub

est exactement ce qu'il me faut.

Merci


Bonsoir,

1ère solution (pas terrible) ::(
En la regardant très souvent
2de solution (moyen) ;-|
En plaçant juste à côté ou une autre feuille
la même valeur qui ne change pas..
3ème solution(mieux) :-)
En plaçant dans le module de feuille
une procèdure worksheet_change:
'*****
Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address & "a changé"
End Sub
'*****
.
Pouer essayer cette procèdure:
Tu copie de '***** à '*****
tu retourne dans Excel tu appuies alt+f11
VBA s'ouvre
puis tu fais Ctrl+r
pour afficher Explorateur de projet
dblclic sur l'icône de feuil1 qui est dedans
puis tu colles cela dans le module vide qui est affiché.
Tu re fermes la fenêtre de VB.
Tu entres une valeur dans feuil1
Mais au bout d'un moment cela va ennerver!
Alors si tu veux , tu peux préciser mieux.
Exemple avec une seule cellule
'*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address & "a changé"
End If
End Sub

'****
LeSteph

"Nemroth" a écrit dans le message de
news:
Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule Excel
SVP ?


Par avance merci
--
Pour me répondre en BAL, retirer le nospam...



--
Pour me répondre en BAL, retirer le nospam...


Avatar
LeSteph
;-))))

"Nemroth" a écrit dans le message de
news:
Merci LeSteph,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address & "a changé"
End If
End Sub

est exactement ce qu'il me faut.

Merci


Bonsoir,

1ère solution (pas terrible) ::(
En la regardant très souvent
2de solution (moyen) ;-|
En plaçant juste à côté ou une autre feuille
la même valeur qui ne change pas..
3ème solution(mieux) :-)
En plaçant dans le module de feuille
une procèdure worksheet_change:
'*****
Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address & "a changé"
End Sub
'*****
.
Pouer essayer cette procèdure:
Tu copie de '***** à '*****
tu retourne dans Excel tu appuies alt+f11
VBA s'ouvre
puis tu fais Ctrl+r
pour afficher Explorateur de projet
dblclic sur l'icône de feuil1 qui est dedans
puis tu colles cela dans le module vide qui est affiché.
Tu re fermes la fenêtre de VB.
Tu entres une valeur dans feuil1
Mais au bout d'un moment cela va ennerver!
Alors si tu veux , tu peux préciser mieux.
Exemple avec une seule cellule
'*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address & "a changé"
End If
End Sub

'****
LeSteph

"Nemroth" a écrit dans le message de
news:
Bonsoir à tous.

Comment peut-on détecter un changement de valeur dans une cellule
Excel



SVP ?

Par avance merci
--
Pour me répondre en BAL, retirer le nospam...



--
Pour me répondre en BAL, retirer le nospam...




Avatar
AV
Cette solution ne te dit pas si le contenu de la cellule a changé mais si,
simplement, une saisie quelconque a été faite ...même si c'est la même valeur !
Il conviendrait donc, à l'ouverture du classeur, de mémoriser la valeur de la
cellule et seulement ensuite, se servir de l'évènement "Worksheet_Change" pour
détecter un changement !

Exemple pour la cellule A1 de "Feuil1"

Dans le module de ThisWorkbook :
Private Sub Workbook_Open()
mémo
End Sub

Dans un module ordinaire :
Public laVar

Sub mémo()
laVar = [Feuil1!A1]
End Sub

Dans le module de "Feuil1" :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If zz <> laVar Then
MsgBox "La valeur de A1a changé !" & vbLf & "Ancienne valeur : " _
& laVar & vbLf & "Nouvelle valeur : " & zz
laVar = zz
End If
End Sub

Enregistrer > fermer > réouvrir > tester
AV
Avatar
ru-th
Salut

variante sans module open
Private Sub Worksheet_Change(ByVal Target As Range)
If target.Address <> "$A$1" Then Exit Sub
Application.EnableEvents = False
rep = Target.Value
Application.Undo
rep1 = Target.Value
Application.Undo
If rep <> rep1 Then rep2 = MsgBox ("La valeur de A1a changé !" & vbLf &
"Ancienne valeur : " _
& rep1 & vbLf & "Nouvelle valeur : " & rep)
Application.EnableEvents = True
End Sub

a+
rural thierry

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

Cette solution ne te dit pas si le contenu de la cellule a changé mais si,
simplement, une saisie quelconque a été faite ...même si c'est la même
valeur !

Il conviendrait donc, à l'ouverture du classeur, de mémoriser la valeur de
la

cellule et seulement ensuite, se servir de l'évènement "Worksheet_Change"
pour

détecter un changement !

Exemple pour la cellule A1 de "Feuil1"

Dans le module de ThisWorkbook :
Private Sub Workbook_Open()
mémo
End Sub

Dans un module ordinaire :
Public laVar

Sub mémo()
laVar = [Feuil1!A1]
End Sub

Dans le module de "Feuil1" :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If zz <> laVar Then
MsgBox "La valeur de A1a changé !" & vbLf & "Ancienne valeur : " _
& laVar & vbLf & "Nouvelle valeur : " & zz
laVar = zz
End If
End Sub

Enregistrer > fermer > réouvrir > tester
AV




Avatar
LeSteph
Bonjour,
ma Sub n'interceptait que sur modification de A1
et non sur la valeur elle même
Merci Thierry
"ru-th" a écrit dans le message de
news:%23tk$
Salut

variante sans module open
Private Sub Worksheet_Change(ByVal Target As Range)
If target.Address <> "$A$1" Then Exit Sub
Application.EnableEvents = False
rep = Target.Value
Application.Undo
rep1 = Target.Value
Application.Undo
If rep <> rep1 Then rep2 = MsgBox ("La valeur de A1a changé !" & vbLf &
"Ancienne valeur : " _
& rep1 & vbLf & "Nouvelle valeur : " & rep)
Application.EnableEvents = True
End Sub

a+
rural thierry

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

Cette solution ne te dit pas si le contenu de la cellule a changé mais
si,


simplement, une saisie quelconque a été faite ...même si c'est la même
valeur !

Il conviendrait donc, à l'ouverture du classeur, de mémoriser la valeur
de


la
cellule et seulement ensuite, se servir de l'évènement
"Worksheet_Change"


pour
détecter un changement !

Exemple pour la cellule A1 de "Feuil1"

Dans le module de ThisWorkbook :
Private Sub Workbook_Open()
mémo
End Sub

Dans un module ordinaire :
Public laVar

Sub mémo()
laVar = [Feuil1!A1]
End Sub

Dans le module de "Feuil1" :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If zz <> laVar Then
MsgBox "La valeur de A1a changé !" & vbLf & "Ancienne valeur : " _
& laVar & vbLf & "Nouvelle valeur : " & zz
laVar = zz
End If
End Sub

Enregistrer > fermer > réouvrir > tester
AV