Excel : Conditions si ou mise en forme

Résolu
Bonjour,
J'aimerais appliquer une couleur aux cellules d'une meme colone ayant la meme valeur en sachant que le tableau est tres grand (300 cellules par colone) soit avec une condition ou une mise en forme conditionnelle
Petit exemple ci dessous
merci pour votre aide

a a
a d
b d
f s
f q
q q
r p
u m
u m
Configuration: Windows Vista Internet Explorer 7.0

15 réponses

  1. Contributeur
    Bonjour,
    S'il s'agit d'identifier les ref en double, pkoi ne pas simplement ajouter un colonne et y mettre un formule du genre : =SI(NB.SI($A:$A;A1)>1;"ref en double";"") ? Passer par un code couleur n'est pas simple et ne permettra ni de filter, ni de trier la liste (apres si tu y tiens vraiment, tu ajoute un colonnes que tu masques puis une petite mise en forme automatique avec un formule =B1="ref en double")
    3
    1. A B
      a =SI(NB.SI($A:$A;A1)>1;"ref en double";"")
      b
      c
      c
      d
      e
      f
      f

      resalut Tom
      j'ai mis ta formule en B1 pour sortir les c et f , ca marche pas ou j'ai rien compris
      C'est comme ca que tu pensais ?
      a+
      0
    2. Contributeur
      @colt74500resalut,
      oui oui, c'est bien ça, reste juste à tirer la formule vers le bas (via la poignée de recopie)
      tu devrais obtenir ça pour les formules:
      a	=SI(NB.SI($A:$A;A1)>1;"ref en double";"")
      b	=SI(NB.SI($A:$A;A2)>1;"ref en double";"")
      c	=SI(NB.SI($A:$A;A3)>1;"ref en double";"")
      c	=SI(NB.SI($A:$A;A4)>1;"ref en double";"")
      d	=SI(NB.SI($A:$A;A5)>1;"ref en double";"")
      e	=SI(NB.SI($A:$A;A6)>1;"ref en double";"")
      f	=SI(NB.SI($A:$A;A7)>1;"ref en double";"")
      f	=SI(NB.SI($A:$A;A8)>1;"ref en double";"")

      et ça devrait donner ça en affichage:
      a	
      b	
      c	ref en double
      c	ref en double
      d	
      e	
      f	ref en double
      f	ref en double
      0
    3. @tompolsSuper ca marche
      je vais le faire dans mon fichier
      je te remerci c'est vraiment sympa, 1er fois que je vais dans un forum , super utile
      a+
      0
    4. Contributeur
      @colt74500de rien, content d'avoir pu aider :)
      @+
      0
  2. ceci ne s applique que a ta colonne A?
    1
    1. bonjout

      tu peux utiliser la mise en forme conditionnelle avec la mise en surbrillance
      0
      1. Bonjour moiced59
        Je sais le faire entre 2 cellules voir plusieurs en lui disant que si la valeur est = a une cellule mettre en gras , couleur etc mais si il faut que je le fasse a toute les cellules par rapport aux autres je vais y passer 2010.
        il me faudrait qque chose que j'applique a tout le document, colonne,
        merci a+
        0
    2. je ferai colonne par colonne donc pour l'instant oui
      en faite j'ai une multitude de mots dans ces colonnes et je voudrais avoir qque chose qui m'indique quand j'ai un doublon
      0
      1. oula ce se complique je pensais que c t seulement avec d lettre tu as bcp de ref differente?
        0
        1. voila g trouver:

          tiens tu peux executer ce code derriere un bouton il trie t donné et met t doublon de la meme coulleur si 2 doublons se suivent un est en rouge et l autre en bleu

          Columns("A:A").Select
          ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
          ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A68000") _
          , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
          With ActiveWorkbook.Worksheets("Feuil1").Sort
          .SetRange Range("A1:A68000")
          .Header = xlGuess
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
          End With

          i = 1

          numcouleur = vbRed
          Do Until i = 1000

          If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
          Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
          If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
          If numcouleur = vbRed Then
          numcouleur = vbBlue
          Else
          numcouleur = vbRed
          End If
          End If
          End If
          i = i + 1
          Loop

          End Sub
          0
          1. J'ai copier coller ta mixture dans une macro, je l'ai executée mais ca me met une erreur
            tu penses qu'il faudrait que je fasse autrement ?
            0
        2. re

          bien sur si tu as plusieur colonne avec des donnée remplace le :
          Columns("A:A").Select du debut parpar exemple t donné vous jusqua la colonne h par
          :Columns("A:H").Select
          de meme pour:
          .SetRange Range("A1:A68000") par:
          .SetRange Range("A1:H68000")
          0
          1. Merci a vous deux
            mais il va falloir que je digere et comprendre vos reponses , je ne suis pas un pro.
            je vous tiendrai au courant si je m'en sort
            a+ et merci
            0
            1. bonjour
              quel est ton message?
              0
              1. Salut

                Erreur d'execution 438
                Proprieté ou méthode non gerée par cet objet

                Dans la macro apres l'erreur le 1er Activeworkbook etait en jaune

                Je ne sais pas si c'est tres clair sinon je me suis debrouillé avec la formule des doublon
                a+

                Sub Macro1()
                '
                ' Macro1 Macro
                ' Macro enregistrée le 08/01/2010 par colt
                '
                ' Touche de raccourci du clavier: Ctrl+d
                'Columns("A:A").Select
                ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
                ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A68000") _
                , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                With ActiveWorkbook.Worksheets("Feuil1").Sort
                .SetRange Range("A1:A68000")
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
                End With

                i = 1

                numcouleur = vbRed
                Do Until i = 1000

                If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
                Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
                If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
                If numcouleur = vbRed Then
                numcouleur = vbBlue
                Else
                numcouleur = vbRed
                End If
                End If
                End If
                i = i + 1
                Loop

                End Sub
                0
            2. re
              tu peux essayé en retirant les activeworkbook
              0
              1. Contributeur
                Salut,
                oulà, pas mal de soucis de compatibilité sur le tri :
                SortFields => inexistant en 2003, jvérifierai + tard pour excel 2007
                pareil : Range("A1:A68000") ne peut fonctionner qu'en excel 2007 (excel 2003 ne fournit que 65536 lignes)...
                ensuite Do Until i = 1000 : il serait plus judicieux de determiner la derniere cellule non vide de la plage et boucler de la 1ere ligne à à celle-ci
                etc...
                Apres pourquoi vouloir absolument coder qd une manipulation simple et facilement répétable pour un non-initié au vba (formule/MFC) peut résoudre le pb ? La solution la plus simple est bien souvent la meilleure (j'aurais bien mis toujours mais ça va lancer un débat lol) !
                0
                1. re

                  je suis d'accord avec toi pr la solution mais trouve moi une formule qui trie les enregistrement et qui met un doublon sur 2 d'1 couleur <> j crois pas trop !!

                  les chiffre ds mon code son bien sur fictif il faut les adapter a son pb!
                  voila avec la 1ere ligne vide

                  vide= Worksheets("feuil1").Cells(1, "A").End(xlDown).Row + 1
                  Columns("A:A").Select
                  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
                  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:vide") _
                  , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                  With ActiveWorkbook.Worksheets("Feuil1").Sort
                  .SetRange Range("A1:vide")
                  .Header = xlGuess
                  .MatchCase = False
                  .Orientation = xlTopToBottom
                  .SortMethod = xlPinYin
                  .Apply
                  End With

                  i = 1

                  numcouleur = vbRed
                  Do Until i = vide

                  If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
                  Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
                  If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
                  If numcouleur = vbRed Then
                  numcouleur = vbBlue
                  Else
                  numcouleur = vbRed
                  End If
                  End If
                  End If
                  i = i + 1
                  Loop

                  End Sub
                  0
                  1. Contributeur
                    Re,
                    premiere chose tu devrais tester ton code avant de le poster :
                    Range("A1:vide") => "A1:A" & vide
                    ensuite tu dis : "qui met un doublon sur 2 d'1 couleur <> j crois pas trop !! "...en fait tu mets les 2 de la meme couleur, c'est ici : Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
                    du coup, ça ferait :
                    vide = Worksheets("feuil1").Cells(1, "A").End(xlDown).Row + 1
                    Columns("A:A").Select
                    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
                    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A" & vide) _
                    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                    With ActiveWorkbook.Worksheets("Feuil1").Sort
                    .SetRange Range("A1:A" & vide)
                    .Header = xlGuess
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .SortMethod = xlPinYin
                    .Apply
                    End With
                    
                    i = 1
                    numcouleur = vbRed
                    
                    Do Until i = vide
                        If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
                            Cells(i + 1, 1).Font.Color = numcouleur
                            If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
                                If numcouleur = vbRed Then
                                    numcouleur = vbBlue
                                Else
                                    numcouleur = vbRed
                                End If
                            End If
                        End If
                        i = i + 1
                    Loop
                    
                    => mettra tous les codes en double en couleur sauf le 1er (avec changemnt de couleur 1 fois sur 2)
                    bon, ça change pas le fait que ce code ne fcontionnera que sur excel 2007 (SortFields) !
                    enfin moi jdis ça, c'est pour aider et puis on va pas debattre sur un post résolu...
                    bonne soirée
                    0
                    1. Bonsoir
                      je viens d'investir dans office2007 et je viens d'essayer la mixture ci dessus.
                      ca a l'air de marcher, cela tri et met les doublons en couleur.
                      je pense que je vais pouvoir m'en servir
                      Derniere petite question, tout ces commandes, vous avez travaillez longuement dessus ou il y a des applications toutes faites, ca 'interesse mais c'est un peu du chinois pour moi.
                      Merci encore
                      0
                  2. re

                    bah mon code je l'zi tester et il met bie un doublon sur 2 de couleur <>
                    0
                    1. bonjour

                      Bah non il faut travailler dessus mais grace a l'enregistreur de macro pas besoin de faire tout par coeur
                      0