Gestion des évènements
Résolu
Agressor
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
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.
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:
- Gestion des évènements
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
- Gestion autorisation application android - Guide
- Logiciel gestion garage - Télécharger - Organisation
4 réponses
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
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
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
un exemple avec ce que ma boule de cristal m'a suggéré
https://www.cjoint.com/?3BlwDmt6LZy
Cdlmnt
à adapter
Cdlmnt
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
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