Couleur de la cellule en fonction de la valeur

Résolu
matchis Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
matchis Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
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

3 réponses

  1. Claudio1705 Messages postés 5 Statut Membre
     
    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
    0
    1. matchis Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour Claudio1705,

      Merci de votre réponse aussi rapide. Je comprend tout à fait.
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
    1. matchis Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
    1. matchis Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      Je comprend de mieux en mieux, merci pour vos explications.
      Je passe le sujet en résolu
      merci encore
      0