Signaler

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

Posez votre question matchis 14Messages postés vendredi 21 juillet 2017Date d'inscription 5 août 2017 Dernière intervention - Dernière réponse le 5 août 2017 à 14:34 par matchis
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 
Utile
+0
plus moins
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 14Messages 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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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 14Messages 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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 14Messages 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !