Mise en forme conditionnelle

Résolu

Bonjour,

J'ai fait un tableau de relevé des prix de produits que j'achète régulièrement.

Je voudrais, lorsque je rentre un prix, la cellule se colore en rouge, ou en vert, si la valeur est supérieure ou inférieure à la dernière cellule non vide de la ligne considérée, et que la formule puisse être recopiée pour les lignes suivantes.

J'ai fait out un tas d'essais, mais sans succès.

Actuellement, je le fait manuellement.

Merci d'avance pour votre aide.


Avoir le temps de prendre son temps

5 réponses

Résumé de la discussion

Le besoin est d'appliquer une mise en forme conditionnelle qui colore une cellule en rouge ou en vert selon qu'elle est supérieure ou inférieure à la dernière cellule non vide de la même ligne, et que la règle puisse être copiée sur les lignes suivantes. Pour Excel 365, la solution exploite les fonctions dynamiques de la ligne, par exemple pour le rouge: ET(B2<>""; B2>PRENDRE(FILTRE($C2:$XFD2;$C2:$XFD2<>"");;-1)) et pour le vert une variante équivalente. Des approches plus universelles existent pour les versions antérieures, utilisant RECHERCHE(9^9;...) ou INDEX/MAX(SI(...)) pour retrouver la dernière valeur non vide et effectuer la comparaison. Il est recommandé de préciser le logiciel et la disposition, et de créer un exemple de fichier pour adapter les formules et valider le comportement.

Bobot (l’IA à votre service)
  1. Bonjour,

    Déjà avec quel logiciel travailles tu Excel, ou Calc de libre office ?

    ensuite dans quelle colonne et ligne de départ travailles tu, la valeur que tu saisis est elle à la fin de la liste ou peux tu remplacer une valeur existante.

    Le mieux est que tu crées un exemple de fichier avec quelques explications que tu joins à la discussion à partir de ce lien

    https://www.cjoint.com/


    0
    1. Bonjour,

      Merci de ta réponse.

      Je te joins le tableau réel, qui n'est pas confidentiel.

      Cdt

      https://www.cjoint.com/c/NKzi7VqiBrj

      0
    2. Bonjour, Je te joins le tableau Excel 2007 concerné.

      Il n'y a rien de confidentiel.

      https://www.cjoint.com/c/NKzi7VqiBrj

      Merci d'avance de tes conseils.

      Cdt

      Goldwing52

      0
  2. Bonjour

    Un exemple, à adapter

    https://www.cjoint.com/c/NKziS5Cbuly

    Cdlmnt

    Via


    0
    1. Bonjour,

      Je regarde ça dans la journée, et je te tiens au courant.

      Ci joint un lien pour le tableau réel.

      https://www.cjoint.com/c/NKzi7VqiBrj

      Merci d'avance

      Cdt Goldwing 52

      0
    2. Bonjour,

      J'ai regardé ton tableau, mais il ne marque que la dernière valeur. Sur mon tableau, en manuel, je conserve les précédentes variations, ce qui me permet de visualiser les évolutions sur l'année, d'un seul coup d’œil.

      Merci quand même.

      Bonne journée.

      Goldwing52

      0
    3. @GOLDWING52

      Bonjour,

      As-tu vu ma proposition Réponse 5 ?

      0
    4. @charles

      Bonjour,

      Je l'ai vue, mais je ne trouve pas la méthode pour l'appliquer sur mon tableau:

      https://www.cjoint.com/c/NKzi7VqiBrj

      Je ne suis pas assez doué dans ce domaine, j'apprends de mes erreurs, mais je n'ai jamais eu de formation en informatique (72 ans).

      Merci quand même.

      Bonne journée

      Goldwing52

      0
    5. @GOLDWING52

      Re

      La formule la plus courte serait

      =ET(LC<>"";LC>RECHERCHE(9^9;LC3:LC(-1))) pour prix supérieur

      =ET(LC<>"";LC<RECHERCHE(9^9;LC3:LC(-1))) pour prix inférieur

      https://www.cjoint.com/c/NKAjZCo4WBy

      RECHERCHE(9^9;LC3:LC(-1))) retourne la dernière valeur des cellules précédant chaque cellule dans la ligne, si la cellule n'est pas vide et d'une valeur strictement supérieure ou inférieure à cette dernière valeur la MFC colorie en conséquence

      Cdlmnt

      Via

      0
  3. Bonjour à tous,

    Solution pour Excel 365, à adapter :

    Avec cette disposition :

    1. Sélectionner la plage B2:Bx, formule :

    =ET(B2<>"";B2>PRENDRE(FILTRE($C2:$XFD2;$C2:$XFD2<>"");;-1))

    format rouge.

    2. Sélectionner la plage B2:Bx, formule :

    =ET(B2<>"";B2<PRENDRE(FILTRE($C2:$XFD2;$C2:$XFD2<>"");;-1))

    format vert.

    Daniel


    0
    1. Re,

      Pour les autres versions, toujours avec cette disposition :

      1. =ET(B2<>"";B2<INDEX(2:2;MAX(SI($C2:$XFD2<>"";COLONNE($C2:$XFD2)))))

      Format vert.

      2. =ET(B2<>"";B2>INDEX(2:2;MAX(SI($C2:$XFD2<>"";COLONNE($C2:$XFD2)))))

      Format rouge.

      Il n'y a pas de couleur en cas d'égalité.

      Daniel


      0
      1. Bonjour à tous,

        Une proposition à tester avec deux formules de MFC, à appliquer sur la plage : $AW$2:$AW$276 :

        =ET(AW2<>"";AW2<INDEX($B2:AV2;EQUIV(9^9;$B2:AV2)))
        pour le vert
        et
        =ET(AW2<>"";AW2>INDEX($B2:AV2;EQUIV(9^9;$B2:AV2)))
        pour le rouge

        https://www.cjoint.com/c/NKzoH6psVjG

        0
        1. Bonjour de nouveau,

          Avec les style références  L1C1 (à changer dans le options), les deux mises en forme conditionnelle (utiliser une formule) :

          =ET(LC<>"";LC<INDEX(LC2:LC(-1);EQUIV(9^9;LC2:LC(-1))))pour vert
          et
          =ET(LC<>"";LC>INDEX(LC2:LC(-1);EQUIV(9^9;LC2:LC(-1))))pour rouge

          https://www.cjoint.com/c/NKAjZumHQlG

          Teste et dis si cela correspond à ton besoin

          0
        2. @charles

          C'est parfait, ça fonctionne.

          Mille merci.

          Bonne journée

          Goldwing52

          0