Menu

Exécution d'une macro automatiquement avec formule dans cellule [Résolu]

Messages postés
5
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
14 avril 2019
- - Dernière réponse : 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
22663
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 avril 2019
7329
0
Merci
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
Pijenyal
Messages postés
5
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
14 avril 2019
-
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.
eriiic
Messages postés
22663
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 avril 2019
7329 -
déposer le fichier xls (réduit au nécessaire et anonymisé sur cjoint.com et coller ici le lien fourni.
eric
Pijenyal
Messages postés
5
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
14 avril 2019
> eriiic
Messages postés
22663
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 avril 2019
-
eriiic
Messages postés
22663
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 avril 2019
7329 -
Essaie avec ça déjà :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D2:F2")) Is Nothing Then Exit Sub

Select Case Target.Column
Case 4: Set sh = ActiveSheet.Shapes("ARA")
Case 5: Set sh = ActiveSheet.Shapes("EPA")
Case 6: Set sh = ActiveSheet.Shapes("DHA")

End Select

Maintenant explique-moi comment tu fais pour avoir #DIV/0! dans une cellule prévue pour une saisie...
Tu t'amuses à mettre =1/0 pour copier coller la valeur ????
Pour l'instant c'est non traité.
Je ne vais pas passer des jours à essayer de deviner ce que tu ne veux pas dire...
D'autant plus que tu as démarré la même question dans un autre forum ce que j'apprécie moyennement.
A courir plusieurs lièvres on n'en attrape aucun.
eric
Pijenyal
Messages postés
5
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
14 avril 2019
-
Désolé Eric. On ne s'enerve pas...
J'ai multiplié les demandes par souci d'urgence (je dois présenter une démo la semaine prochaine). Dès que je trouve une première solution définitive, je ferme les discussions. Je comprendrais si tu ne souhaites plus intervenir pour m'aider à trouver cette solution; Pour ce qui est de #DIV/0!, je dois copier les données assez fouillis d'un autre fichier traité par un collègue. Ces données comprennent des formules. Moi je copie une ligne de ces données que je colle ensuite en brut (sans sa formule) car je n'ai besoin que des valeurs. Et dans les données de mon collègue, il y a ces types d'erreur que je corrige par SIERREUR... avant de les retraiter à mon tour en macro.
Désolé encore, je ne pensais pas que c'était pertinent pour toi.
Commenter la réponse de eriiic