Mise en forme conditionnelle excel

Résolu
Mise en forme conditionnelle sur plusieurs lignes avec valeurs differentes

Bonjour et merci d'avance pour votre aide

j'ai besoin de mettre une Mise en forme conditionnelle sur plusieurs lignes avec des valeurs differentes . je m'explique:

j'ai deux colonnes G ET H alors j'ai besoin que chaque ligne de la colonne H se colorie en rouge si sa valeur est strictement inferieur à la valeur que contient les memes lignes de la colonne G

Exemple:

Ligne N 10 si H10 < G10 alors la cellule H10 devient rouge et je veux que la condition soit valable pour toutes les lignes (sachant que les valeurs changent)

merci d'avance

9 réponses

  1. petit macro tu remplace 2 et 1 par :
    2-> colone à colorier
    1-> colone de comparaison

    Sub Macro2()
    '
    Dim i
    For i = 1 To 100
    Cells(i, 2).Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
    Formula1:="cells(i,1)"
    Selection.FormatConditions(1).Interior.ColorIndex = 3
    Next i

    End Sub

    La vie c'est comme une boite de chocolat, on ne sait jamais sur quoi on va tomber.
    0
    1. MERCI STEEFIF pour ta reponse mais j'ai essayé d'inserer ce macro mais j'y arrive pas
      peux tu detailler STP

      merci
      0
    2. je vais te faire une feuille excel ce matin avec un exemple je post des que c'ets fait
      0
  2. Contributeur
    Bonjour,

    les mises en forme conditionnelle peuvent être précisées sans forcément passer par des macros VBA. Si vous regardez ici, vous devriez trouver votre bonheur.

    Cordialement.
    0
    1. MERCI steefif j'attends ton exemple :D
      chossette9 : j'ai deja essayé de passer par une mise en forme conditionnelle simple mais ça ne fonctionne que pour une ligne (les valeurs de la colonne G changent chaque ligne) alors il faudrait mettre une conditon pour chaque ligne sachant qu'il ya une centaine :(
      0
      1. Alors en fait voici l'exemple avec les colonnes G et H

        Sub Macro2()
        '
        Dim i
        For i = 1 To 100
            Cells(i, 8).Select
            Selection.FormatConditions.Delete
            If (Cells(i, 8).Value < Cells(i, 7).Value) Then
                Selection.Interior.ColorIndex = 3
            End If
        Next i
        
        End Sub
        


        donc 8 pour h
        et 7 pour g

        tu fais une nouvell macro que tu lances et pouf ca marche
        pour fair eune nouvelle macro :
        outil/macro/enregistrer
        tu arrete
        et tu remplaces le code généré dans visual basic par le code fourni

        si tu as des soucis dis le je dubloquerai

        0
        1. MERCCCCCCIIIIIIIIIII té génial
          je teste ça et je te tiens au jus
          0
          1. au fait la macro ne fonctionne pas !!! ce qu'elle fait c'est de balayer toutes les lignes de la colonne H '(une par une) et colorie en rouge celles qui sont inferieur à G
            apres le balayage ,si je modifie une valeur elle n'est pas prise en compte (meme en relancant la macro :( )
            moi je veux que sa se fasse automatiquement sans de lancer la macro à chaque fois !!!

            merci d'avance
            0
            1. Contributeur
              Bonjour,

              chossette9 : j'ai deja essayé de passer par une mise en forme conditionnelle simple mais ça ne fonctionne que pour une ligne (les valeurs de la colonne G changent chaque ligne) alors il faudrait mettre une conditon pour chaque ligne sachant qu'il ya une centaine :(

              Sélectionne toutes tes cellules en H avant de faire ta MFC, et fixe ta MFC sur la cellule active (la 1ère sélectionnée).
              Par exemple tu sélectionnes H2:H50 et ta MFC est :
              'inférieure à' =$G2

              eric
              0
              1. j'ai deja essayé de faire ça mais ça fonctionne pas car ttes les cellules que j'ai selectionné (H2 : H50) deviennent rouge que si elles sont inferieur à =$G2 !!! Alors que chaque ligne x la cellule Hx doit dependre de la cellule Gx !!!
                0
              2. Contributeur
                Si ça fonctionne,
                seulement soit plus attentif à ce qui est écrit : =$G2 et non pas =$G$2 comme tu as dû l'écrire....
                0
              3. Contributeur
                Ta suggestion fonctionne, je viens de tester chez moi.
                0
              4. yeeeeeeeeeeeeeeeeeeeeees ça fonctionne !!!!!!!
                ta raison c'était le petit dollard qui génait (donc ma condition restait fixé sur la valeur de la premiere cellule) merci infiniment les gars !!!!!
                steetif : merci aussi pour ta macro
                0
            2. bon alors dans ton visual basic suppriem la macro que je t'ai dit de creer

              dans ton visual basic dans l'arborescence de gauche tu as un truc qui s'appelle feuil1
              clique dedans et colle ca :
              Private Sub Worksheet_Change(ByVal Target As Range) 
              Dim KeyCells As Range 
              Dim i 
              
              ' La variable KeyCells contient les cellules qui déclencheront 
              ' une alerte si elles sont modifiées. 
              Set KeyCells = Range("G1:H1000") 
              
              If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
              Is Nothing Then 
              
              ' Changement de couleur si besoin 
              ' lorsque l'une des cellules désignées 
                  For i = 1 To 100 
                      Cells(i, 8).Select 
                      Selection.Interior.ColorIndex = 0 
                      If (Cells(i, 8).Value < Cells(i, 7).Value) Then 
                          Selection.Interior.ColorIndex = 3 
                      End If 
                  Next i 
              End If 
              End Sub 
              
              


              test mais en théorie ça marche

              La vie c'est comme une boite de chocolat, on ne sait jamais sur quoi on va tomber.
              0
              1. Contributeur
                Bonjour,

                ça fonctionne si tu le met dans 'ThisWorbook' et non pas dans 'Feuil1'
                0
              2. non dans this workbook chez moi ça marche pas
                ça marche que dans feuil1
                0
              3. Contributeur
                Tu as dû rater le message de 14h15 : pas besoin de macro pour ça..
                0
              4. l'important c'est que ca marche je savai spas faire sans macro
                et je savais pas faire declencher sur un changement d'une plage de cellule.
                ca m'a appris aussi quelquechose! =)
                0