worksheet_change

celegorm

XLDnaute Nouveau
bonjour à tous,
je débute en vba et j'ai du mal à comprendre comment on exécute le code. Notamment, je ne comprend pas comment utiliser/intégrer ce code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    'permet de sortir de la procédure si plus d'une cellule est sélectionnée
    '(sinon la suite de la macro renvoie un message d'erreur)
    If Target.Count > 1 Then Exit Sub
    
    MsgBox "Vous venez de modifier la cellule " & Target.Address & _
        " (" & Target.Value & ")"
        
End Sub
J'aimerai surveiller le changement d'une valeur dans la cellule A1... et je ne sais pas comment faire celà
d'avance merci de votre aide
 

celegorm

XLDnaute Nouveau
Re : worksheet_change

mon script doit me servir à surveiller si des changements interviennent sur un site web. donc en A1 j'ai la donnée qui vient du site et je dois faire apparaitre "a changé " disons B1....
merci de votre aide :)
alors j'ai réussi à comprendre qu'il fallait aller dans le sous ensemble change (je sais pas comment ça s'appelle) pour coller mon code et le rendre actif.
j'arrive à faire apparaitre un message dès qu'un changement intervient dans ma feuille
par contre comment tester ma valeur : je ne vois pas comment je peux récupérer l'ancienne valeur en A1 et celle renvoyée par le refresh (qui intervient toutes les 60s).
J'espère que je suis assez clair.
désolé de poser ce genre de question qui doit vous paraitre triviale... je me suis mis à VBA ce matin :)
 
Dernière édition:

GCFRG

XLDnaute Occasionnel
Re : worksheet_change

tu peux accéder à l'éditeur VBA par ALT F11

Dans mon fichier, j'attribue la valeur de la celule A1 à la cellule CU1, a l'ouverture
thisworkbook
workbook open

puis dans Worksheet_SelectionChange de la feuille 1
je fais un test, si la valeur change, je met un message qui rappelle l'ancienne valeur, dans ton cas, mets ce code dans Worksheet_Change plutot.
tu peux recuperer la valeur ou tu veux en changeant a partir deMsgBox................. tu mets par exemple .Range("B1").value = temp
si PB reviens
Gilbert
 
Dernière édition:

celegorm

XLDnaute Nouveau
Re : worksheet_change

merci beaucoup, j'ai fait un grand pas :)
j'ai mis le code dans "change" et non pas selection change pour que l'on n'ai pas à cliquer. (je sais pas si j'ai bien fait)
j'ai fait en sorte qu'il m'affiche "modifié" en C2. Par contre, si à la suite de "modifié à" je rajoute & time(), celà fait planter Excel (2007)....
pourquoi ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim temp As String
With Sheets("Feuil1")
temp = Range("E2").Value

If .Range("D2").Value <> .Range("E2").Value Then
.Range("C2").Value = "modifié à"
End If
If temp <> .Range("D2").Value Then
.Range("E2").Value = .Range("D2").Value
End If
End With
End Sub
 

GCFRG

XLDnaute Occasionnel
Re : worksheet_change

Re, j'ai testé il vaut mieux le mettre ici, sinon çà boucle, et provoque X erreur !

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim temp As String
With Sheets("Feuil1")
temp = Range("E2").Value
If .Range("D2").Value <> .Range("E2").Value Then
.Range("C2").Value = "modifié à " & CStr(Time())
'If temp <> .Range("D2").Value Then
.Range("E2").Value = .Range("D2").Value
End If
'End If
End With
End Sub

Gilbert
 

Discussions similaires

Réponses
1
Affichages
273

Statistiques des forums

Discussions
312 671
Messages
2 090 762
Membres
104 657
dernier inscrit
BS_70