Gestion des évènements

Résolu/Fermé
Agressor - 11 févr. 2015 à 21:13
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 - 12 févr. 2015 à 17:30
Bonjour à tous,

Je suis complètement novice dans la programmation VBA, mais j'en ai besoin pour mes études, afin de pouvoir faire des simulations.

Ce que je souhaiterais:

=> Dès que la cellule H7 est modifiée (elle va contenir une formule de calcul, donc sera modifiée automatiquement, sans manipulation manuelle ou autre programme), les objets de la feuille, en l'occurrence les 7 rectangles de différente hauteur (qui montrent en fait le niveau de volatilité) changent de couleur, mais pas tous en même temps.

Exemple:
Si la cellule H7 est inférieure à 2%, c'est le premier rectangle uniquement qui change de couleur.
Si la cellule H7 est supérieure à 2% mais inférieure à 5%, c'est les deux premiers rectangles qui changent de couleur, et ainsi de suite.

J'ai essayé de faire le tout avec l'évènement Worksheet_Change (avant d'apprendre que cela ne marche pas pour les cellules avec les formules ^^) mais même avec la modification manuelle de la cellule en question, je n'arrivais pas à faire changer la couleur du rectangle.

Pourriez-vous me donner des pistes, svp?

Merci par avance et bonne soirée.
A voir également:

4 réponses

ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
11 févr. 2015 à 21:33
Bonjour

Dans le cas où H7 contient une formule, l'évènement Worksheet_Change doit être ciblé sur les cellules qui interviennent dans ta formule

Pour aller plus loin, il faudrait la partie concernée de ton fichier utilises cjoint.com et joins le lien à ton prochain message . Ton fichier au format excel 2003 si possible (du moins pour que je puisse le lire). Et ajoutes y quelques explications sur le résultat attendu

Cdlmnt
0
Bonsoir,

Merci pour votre réponse.

Voici le lien: http://cjoint.com/?EBlv5ftgQpn

Pour ce qui est du résultat, en fait je voudrais que en fonction de la valeur calculée dans la cellule H7, les rectangles affichent le niveau de volatilité de 1 à 7. C'est peut être plus clair avec le fichier...

Merci,

Cdmt
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 11/02/2015 à 22:21
Pas très claires tes explications (qui d'ailleurs ne sont pas dans ton fichier)
un exemple avec ce que ma boule de cristal m'a suggéré
https://www.cjoint.com/?3BlwDmt6LZy

Cdlmnt
0
C'est très proche de ce que je veux, voici le lien avec une petite explication, j'espère que cette fois-ci c'est mieux: http://cjoint.com/?EBlw1ixXzlU

Merci bcp.

Cdmt
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
12 févr. 2015 à 11:53
à adapter

Const cel1 = "H3"
Const Cel2 = "H4"
Const celf = "H7"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long, v As Long
If Not Intersect(Target, Union(Range(cel1), Range(Cel2))) Is Nothing Then
   v = Round(Range(celf).Value)
   If v > 7 Then v = 7
   If v < 0 Then v = 0
   ' on colorie tous les rectangles en bleu clair
   For k = 1 To 7
     Shapes("Rectangle " & k).Fill.ForeColor.SchemeColor = 42
   Next k
  ' selon la valeur de v on coloriera les kmax premiers rectangles en bleu foncé
   Select Case v
     Case Is > 6: kmax = 7
     Case Is > 5: kmax = 3
     Case Is > 3: kmax = 2
     Case Is > 1: kmax = 1
   End Select
   For k = 1 To kmax: Shapes("Rectangle " & k).Fill.ForeColor.SchemeColor = 4: Next k
End If
End Sub

Cdlmnt
0
Merci bcp!

Cdmt.
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
12 févr. 2015 à 17:30
De rien
Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne fin de journée
0