Bonjour à tous,
Je suis nouveau sur ce forum, je m'y suis inscrit car on y trouve des tas de choses intéressantes et c'est vraiment utile pour des débutants comme moi.
Avec le code ci dessous, dès que A1 est modifié suite à un calcul, une fenetre s'affiche:"hello". Imaginons que A1=B1*C1, donc quand on change B1 ou C1, cela change bien sur A1 automatiquement.
Je voudrai qu'une Macro se lance à la place de la fenêtre "hello" mais je n'y arrive pas, il y a toujours un message d'erreur et excel se plante. Je ne sais pas quelle ligne de code inscrire à la place de MSgBox.
Avec la fonction Target, cela fonctionne mais seulement si on change A1 "manuellement". Le but est de déclencher une macro lorsque A1 est modifiée suite à un calcul, d'où Worksheet_calculate.
Dans le module objet de Feuil1 :
' Dans le module de code ThisWorkbook :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public ValPrec Private Sub Worksheet_Calculate() Vérif End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Vérif End Sub Private Sub Vérif() If VarType(Range("A1")) = VarType(ValPrec) Then _ If ValPrec = Range("A1") Then Exit Sub MsgBox "hello" ValPrec = Range("A1") End Sub
Autre point, imaginons qu'en A1, nous ayons la valeur A1=1, lorsque la valeur est changée suite à un calcul pour donner la valeur A1=2, une fenêtre s'ouvre : "hello".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Workbook_Open() Feuil1.ValPrec = Feuil1.Range("A1") End Sub
Maintenant, si un nouveau calcul nous donne encore la valeur A1=2, la fenêtre ne s'ouvre pas.
Effectivement, la valeur n'a pas été modifiée MAIS il y a eu un nouveau calcul qui n'est pas pris en compte. Comment remédier à ce second problème?
En résumé:
comment déclencher une macro quand une cellule se modifie suite à un calcul?
comment gérer le problème lorsque 2 calculs consécutifs donnent le même résultat?
Merci à vous!
J'ai posé la question sur plusieurs forum, mais je n'ai pas encore eu de réponse.
Partager