Exécution d'une macro automatiquement avec formule dans cellule
Résolu
Pijenyal
Messages postés
11
Statut
Membre
-
Pijenyal Messages postés 11 Statut Membre -
Pijenyal Messages postés 11 Statut Membre -
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
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:
- Exécution d'une macro automatiquement avec formule dans cellule
- Formule si et - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule moyenne excel plusieurs colonnes - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller une cellule excel dans une formule - Guide
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.
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.
(ref misent au hasard)
eric
eric
https://www.cjoint.com/c/IDoqunq45zt