détection changement de valeure - VB/VBA/VBS - Programmation
Marsh Posté le 25-07-2006 à 15:32:51
Cgplaco a écrit : J'ai une cellule avec une formule dans exel (ex : =A1+A2), et je voudrais exécuter une action automatiquement à chaque foie |
si tu as la formule "=A1+A2" dans A3 par exemple, il est inutile de demander de calculer a nouvau la valeur si A1 ou A2 sont modifiés, c'est fait automatiquement par Excel.
Par contre, si tu fait varier ta formule selon les valeurs qu'il y a dans d'autre cellules, tu fais appel à la fonction .Formula = "=..."
Marsh Posté le 25-07-2006 à 15:37:54
non, en fait, ce que je veux faire c'est par exemple faire incrémenter un compteur à chaque foi que la valeure calculée par la formule dans la cellule A3 change...
Marsh Posté le 25-07-2006 à 15:38:16
Tu peux utiliser la procédure Calculate dans ta feuille
Si A3=A1+A2, dès que A1, ou A2 est modifié ta procédure Calculate se déclenche et exéute le code que tu lui as mis. Si tu entre dans la cellule sans changer la valeur la procédure ne se déclenche pas.
Private Sub Worksheet_Calculate()
'mets ton code
End Sub
Marsh Posté le 25-07-2006 à 15:44:56
Comment est ce que je doit l'écrire?
Private Sub Worksheet_Calculate()
if ?????????? then
"mon code"
Marsh Posté le 25-07-2006 à 15:48:10
ce que paul voulait dire par là, c'est que la fonction calculate prend en compte toute modification de cellule intervenant dans un calcul. Para rapport à ton idée de départ, qui reprend ton histoire d'historique de modification, une simple formule cells(i,j).value = cells(i,j).value + 1 où cells(i,j) correspond à ta cellule compteur adéquate.
Marsh Posté le 25-07-2006 à 15:49:31
Est-ce qu'il y a d'autres cellules pour lesquelles un calcul est effectué ?
Marsh Posté le 25-07-2006 à 16:06:03
Dans ta feuille "Feuil1"
' la formule C1=A1+B1, le cpt en cellule A4 (initialisé à 0 dans la feuille)
Private Sub Worksheet_Calculate()
If Sheets("Feuil1" ).Range("C1" ).Value <> ValC1 Then
Sheets("Feuil1" ).Range("A4" ).Value = Sheets("Feuil1" ).Range("A4" ).Value + 1
End If
End Sub
Dans ThisWorkbook
Public ValC1 As String
Private Sub Workbook_Open()
ValC1 = Sheets("Feuil1" ).Range("C1" ).Value
End Sub
et ca compte les modifs de la cellule C1 et mets le compteur en A4
Marsh Posté le 25-07-2006 à 17:21:56
OK, cette foi ça marche très bien, merci beaucoup pour votre aide.
Marsh Posté le 25-07-2006 à 15:26:02
J'ai une cellule avec une formule dans exel (ex : =A1+A2), et je voudrais exécuter une action automatiquement à chaque foie
que cette cellule change de valeure. pouvez vous me dire quelle instruction je doit utiliser?