Menu

Couleur de la cellule en fonction de la valeur [Résolu]

matchis 14 Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention - 4 août 2017 à 17:14 - Dernière réponse : matchis 14 Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention
- 5 août 2017 à 14:34
Bonjour,

Je suis actuellement en stage en marketing, je dois faire un tableau comparatif de plusieurs tarifs concernant différents programmes sur plusieurs jours.

Je dois mettre à jour ce comparatif chaque nouveau jour de travail, tout en gardant les précédentes versions du comparatif, ce que j'ai fait, je crée chaque jour une nouvelle feuille dans le même classeur, à partir de la précédente.

Pour que le tableau et les tarifs ayant changé soient plus lisibles, j'aimerai que sur la nouvelle feuille que je crée, les valeurs ayant changé soient colorées en fonction de si elles ont augmenté ou diminué par rapport à la feuille précédente. Mais j'aimerai le faire sans devoir passer par la mise en forme conditionnelle, histoire d'automatiser la chose. (si c'est possible bien évidemment)

Je m'explique :
Feuille 1 : la valeur de la cellule J11 est de 129
Si sur la feuille 2 : la valeur de la cellule J11 est de 134 : la couleur de la cellule/la police sera verte
Si sur la feuille 2 : la valeur de la cellule J11 est de 125 : la couleur de la cellule/la police sera rouge

Avant toute autre question, est ce possible ?
Je me suis dis que une fonction SI marcherait peut-être mais je ne suis pas assez expérimenté ni connaisseur en fonctions Excel pour prétendre savoir en faire une de cette "envergure" si je puis dire.
Ou encore VBA mais la pareil je suis encore plus une bille dans ce domaine là que pour les fonctions.

Si il existe d'autres possibilités d'y arriver je suis aussi preneur. (peut-être plus faciles que VBA ou fonctions)

J'espère que mes explications et ma demande sont assez claires pour vous. Sinon n'hésitez pas à me demander d'autres explications.

PS : voici le lien d'un document à titre d'exemple, ce n'est pas le vrai document mais la mise en page est exactement la même.

http://www.cjoint.com/c/GHepmIooCUv

Merci d'avance

matchis
Afficher la suite 

Votre réponse

6 réponses

Claudio1705 4 Messages postés vendredi 4 août 2017Date d'inscription 4 août 2017 Dernière intervention - 4 août 2017 à 17:37
0
Merci
bonjour je suis presque sûr que c'est possible via les macros visual basic qui sont dans Excel. Je cherche des que possible. Je connais très bien Excel, mais je cherche maintenant comment bien suivre mes questions/réponses ! Je vous tiens au courant
matchis 14 Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention - 4 août 2017 à 17:38
Bonjour Claudio1705,

Merci de votre réponse aussi rapide. Je comprend tout à fait.
Commenter la réponse de Claudio1705
ccm81 8526 Messages postés lundi 18 octobre 2010Date d'inscription 19 juillet 2018 Dernière intervention - Modifié par ccm81 le 4/08/2017 à 17:55
0
Merci
Bonjour

Un petit exemple
http://www.cjoint.com/c/GHep1tZXh3B

RQ. On peut aussi créer une copie intégrale (code compris) d'une feuille avec une macro

Cdlmnt
matchis 14 Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention - 5 août 2017 à 12:25
bonjour ccm81,

D'abord merci de votre réponse.

Je dois avouer que je ne comprend du tout la macro ahah mais je l'ai essayé sur le document original et elle marche parfaitement. Merci pour votre aide.

matchis
Commenter la réponse de ccm81
ccm81 8526 Messages postés lundi 18 octobre 2010Date d'inscription 19 juillet 2018 Dernière intervention - 5 août 2017 à 14:10
0
Merci
Le code avec quelques explications
Option Explicit

' constante decrivant la configuration des données
Const celnomFP As String = "A1"     ' cellule contenant le nom de la feuille précédente
Const lideb As Byte = 11            ' première ligne des données
Const codeb As Byte = 10            ' premiere colonne des données
Const rouge As Byte = 3             ' code rouge
Const vert As Byte = 4              ' code vert

' procedure lancée lors d'un changement dans la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, li As Long, co As Long, lifin As Long, cofin As Long
Dim FP As String
' si plusieurs cellules changent on ne fait rien
If Target.Count > 1 Then Exit Sub
' derniere ligne/colonne de la feuille
lifin = Cells(Rows.Count, codeb).End(xlUp).Row
cofin = Cells(lideb, Columns.Count).End(xlToLeft).Column
' plage correspondant au tableau des tarifs (sans les têtes de ligne.colonne
Set plage = Range(Cells(lideb, codeb), Cells(lifin, cofin))
' si la cible est dans la plage on y va
If Not Intersect(Target, plage) Is Nothing Then
  ' ligne/colonne de la cible
  li = Target.Row
  co = Target.Column
  ' nom de la feuille precedente
  FP = Range(celnomFP).Value
  ' on compare la valeur de la cible à sa correspondnate dans la feuille
  ' precedente et si elle est différente on lui attribue la couleur rouge/vert
  If Target.Value < Sheets(FP).Cells(li, co).Value Then
    Target.Interior.ColorIndex = rouge
  ElseIf Target.Value > Sheets(FP).Cells(li, co).Value Then
    Target.Interior.ColorIndex = vert
  End If
End If
End Sub

Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Cdlmnt
matchis 14 Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention - 5 août 2017 à 14:34
Je comprend de mieux en mieux, merci pour vos explications.
Je passe le sujet en résolu
merci encore
Commenter la réponse de ccm81