détection changement de valeure

détection changement de valeure - VB/VBA/VBS - Programmation

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?

Reply

Marsh Posté le 25-07-2006 à 15:26:02   

Reply

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  
que cette cellule change de valeure. pouvez vous me dire quelle instruction je doit utiliser?


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 = "=..."

Reply

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...

Reply

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

Reply

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"

Reply

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.

Reply

Marsh Posté le 25-07-2006 à 15:49:31    

Est-ce qu'il y a d'autres cellules pour lesquelles un calcul est effectué ?

Reply

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

Reply

Marsh Posté le 25-07-2006 à 17:21:56    

OK, cette foi ça marche très bien, merci beaucoup pour votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed