Exécution d'une macro automatiquement avec formule dans cellule

Résolu/Fermé
Pijenyal Messages postés 5 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 14 avril 2019 - 14 avril 2019 à 12:43
Pijenyal Messages postés 5 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 14 avril 2019 - 14 avril 2019 à 19:26
Bonjour à tous,

J'aimerais exécuter une macro automatiquement lorsque la valeur d'une cellule change.
Le problème est que la cellule contient une formule et ma macro ne fonctionne pas (sauf si je change moi meme la valeur ce que je ne souhaite pas)

Voici mon code qui fonctionne très bien mais manuellement. Il consiste à changer la couleur (RGB) de
la forme (= objet dessin dénommé "ARA", "EPA" et "DHA") en fonction des valeurs entrées dans les cellules
E20; E21, et E22. Sauf que ces valeurs sont issues d'une formule (E20=A1/20 par exemple).


Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160704

If Intersect(Target, Range("E20:E22")) Is Nothing Then Exit Sub

Select Case Target.Row
Case 20: Set sh = ActiveSheet.Shapes("ARA")
Case 21: Set sh = ActiveSheet.Shapes("EPA")
Case 22: Set sh = ActiveSheet.Shapes("DHA")
End Select

If IsNumeric(Target.Value) Then
If Target.Value >= 50000 Then
sh.Fill.ForeColor.RGB = RGB(255, 192, 0)
ElseIf Target.Value < 50000 And Target.Value >= 5000 Then
sh.Fill.ForeColor.RGB = RGB(251, 221, 41)

Else
sh.Fill.ForeColor.RGB = RGB(230, 230, 230)
End If
End If


End Sub
A voir également:

1 réponse

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
14 avril 2019 à 12:48
Bonjour,

Dans ce cas dans ton Worksheet_Change il faut superviser les cellules des antécédents de ta formule.
Soit A1 dans ton exemple E20=A1/20
eric
0
Pijenyal Messages postés 5 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 14 avril 2019
14 avril 2019 à 13:34
Bonjour Eriiic,
Merci pour votre rapide réponse. Je suis un novice en VBA. J'ai essayé votre solution mais je n'obtiens pas le résultat escompté. A vrai dire, la vraie formule est : E20=SI(ESTERREUR(A1);0;A1) et celle-ci concerne une série de cellules prises aléatoirement (pas dans l'ordre E20 pour A1, E21 pour A2 etc.., le but de la formule est en fait de les réarranger sur une nouvelle colonne). Je cherchais une instruction à entrer dans mon code VBA qui prendrait en compte automatiquement les modifs apportées dans A1, A2... mais à partir de E20, E21 et E22.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
14 avril 2019 à 14:06
Si tu as ESTERREUR(A1) dans ta formule c'est que A1 en contient une aussi.
Donc remonter tous les antécédents pour surveille les modifications de ceux-ci.
Ex :
E20: =SI(ESTERREUR(A1);0;A1)
A1: = 1/Z1

C'est la modif de Z1 qui entraine tous les recalculs, c'est donc sur un Change de cette cellule que tu dois faire tes tests et agir.
If Intersect(Target, union([Z1],(K3],(B23]) Is Nothing Then Exit Sub

(ref misent au hasard)
eric
0
Pijenyal Messages postés 5 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 14 avril 2019
Modifié le 15 avril 2019 à 23:00
Merci pour ce retour. J'ai fait l'essai avec Target, union..., tjrs aucun résultat. Peut-être que je m'y prends mal. Je peux vous envoyer le fichier simplifié en question pour vous en rendre compte ? La macro ne s'exécute que lorsque j'entre les valeurs manuellement dans les cellules E14 à E16 mais pas en les saisissant d'abord sur les cellules D2 à F2.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 14 avril 2019 à 17:09
déposer le fichier xls (réduit au nécessaire et anonymisé sur cjoint.com et coller ici le lien fourni.
eric
0
Pijenyal Messages postés 5 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 14 avril 2019 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
14 avril 2019 à 18:22
C'est fait :
https://www.cjoint.com/c/IDoqunq45zt
0