Conditions sur résultat de mise en forme conditionnelle
Bonjour,
Je cherche à savoir comment récupérer le résultat d'une mise en forme conditionnelle sous VBA afin de l'utiliser comme condition:
En effet je travaille sur un document où pour plusieurs colonnes de nombres, plusieurs mises en forme conditionnelle sont appliquées pour qu'un rond rouge/jaune ou vert apparaisse à côté en fonction de la valeur.
Par exemple pour une certaine colonne, si la valeur de la colonne est supérieure à 20, on applique un rond rouge, si elle est supérieure à 10 un jaune, et un rond vert sinon.
En revanche pour les autres colonnes où le format est appliqué, les thresholds ne sont pas nécessairement les mêmes, et j'aimerais pouvoir appliquer les conditions de mon code simplement basé sur la couleur de l'icône contenue dans la cellule (càd faire un if-else suivant si le cercle est vert, jaune ou rouge dans une cellule donnée)
A première vue le type de mise en forme conditionnelle à l'air de correspondre à l'élement ItemSets xl3TrafficLights1, mais n'ayant jamais travaillé sur la mise en forme conditionnelle sur VBA avant je suis un peu dans le flou et je ne sais pas trop quoi en faire.
Est-ce possible?
Après, il y a toujours à mon avis la possibilité de changer le type de mise en forme pour changer la couleur de police ou de fond de cellule plutôt que de mettre une icône, mais si je pouvais travailler sur les formats déjà présent dans mon document ça serait préférable.
Merci par avance,
Cordialement
Salut gregaud,
Je te fais un retour d'expérience ayant moi-même eu des déboires sur les mises en formes conditionnelles.
Le principe c'est que la mise en forme conditionnelle ne modifie pas ta cellule, il ne s'agit que d'une "impression" visuelle générée par le module de mise en forme conditionnelle.
En clair si tu veux que les cellules >10 soient rouge, ta cellule ne devient pas rouge, elle apparait simplement rouge
Pour résoudre ton problème tu vas devoir reproduire en VBA la logique que tu as appliqué dans tes MeF conditionnelles...
Dans ton exemple si la cellule est supérieure à 20 elle a un rond rouge => Au lieu d'utiliser le rond rouge comme critère dans ton if-else il va falloir que tu utilises le critère employé dans ta mise en forme conditionnelle
Les traitements sont plus longs mais c'est la seule solution que j'ai trouvée. Si quelqu'un a autre chose je suis preneur
Bon courage
Bonjour PinkRabbit,
Merci de ta réponse, c'est un peu ce que je redoutais car c'est pas très adaptatif en cas de changement des conditions (chaque fois qu'on change l'Excel il faut changer le script en même temps), mais s'il n'y a pas d'autre moyen... on va faire avec
Merci beaucoup!
Tu peux récupérer les paramètres de tes règles de mises en formes conditionnelles par VBA.
Autre solution (celle que j'ai mis en place) c'est d'avoir une page où tu centralises tes mises en formes conditionnelles avec les paramètres. C'est du travail mais ça permet de tout avoir sous la main et d'avoir une interface utilisateur pour en créer de nouvelles.
Bon courage à toi en tout cas