Forme condition - Comment faire > 3 condition

Résolu
anne-sof Messages postés 5 Statut Membre -  
anne-sof Messages postés 5 Statut Membre -
Bonjour,

Je maitrise bien la fonction "Format conditionnel" mais comment faire lorsque l'on a + de 3 conditions?

Imaginons :
=A => Rouge
=B => Bleu
=C => Vert
=D => Orange

merci pour votre aide :-)

anne-sophie
Configuration: Windows XP
Excel 2003

8 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    ou bien tout mettre en fond orange et ne tester que A B C
    eric
    1
  2. g Messages postés 1285 Statut Membre 578
     
    Bonjour,

    Tu peux utiliiser le code VBA http://gerard.g.pagesperso-orange.fr/logexl_09.htm#mise_forme_cond

    Bonne soirée.
    0
    1. anne-sof Messages postés 5 Statut Membre
       
      merci pour votre aide! J'ai pas mal avancé.
      Cependant, j'ai besoin de tester un tres grand tableau (180 colonnes et 50 lignes).
      J'enchaine donc 2 boucles, ce qui donne un temps de réponse tres (trop!) long.

      Une idée?

      merci,



      Private Sub Worksheet_SelectionChange(ByVal Target As Range)


      For j = 7 To 200

      For i = 15 To 75 'rangées de 15 à 75

      If Cells(i, j) = "C" Then
      Cells(i, j).Interior.ColorIndex = 4
      Else
      If Cells(i, j) = "Cp" Then
      Cells(i, j).Interior.ColorIndex = 45
      Else
      If Cells(i, j) = "M" Then
      Cells(i, j).Interior.ColorIndex = 3
      Else
      If Cells(i, j) = "Su" Then
      Cells(i, j).Interior.ColorIndex = 8
      Else
      If Cells(i, j) = "Sc" Then
      Cells(i, j).Interior.ColorIndex = 33
      Else
      If Cells(i, j) = "F" Then
      Cells(i, j).Interior.ColorIndex = 5
      Else
      If Cells(i, j) = "" Then
      Cells(i, j).Interior.ColorIndex = 2

      End If
      End If
      End If
      End If
      End If
      End If
      End If

      Next i
      Next j
      End Sub
      0
  3. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 488
     
    Tu peux aussi passer à Excel 2007 ...
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Ce n'est pas 4 tests que tu as à faire mais plus, comme quoi il est important d'être précis dans une question...
    Au passage tu as ElseIf qui existe et qui évite d'avoir 15 End If à la fin...

    Ce qui est très long c'est de lire une cellule. Donc met cells(i,j) dans une variable au début et teste cette variable.
    Ou mieux utilise la structure select case :
    Select case cells(i,j)
    case "A"
    faire ceci
    case "B"
    faire celà
    ....etc
    case else
    'sinon faire ça
    end select

    Si ce n'est tjs pas assez rapide il faut lire d'un bloc toute la plage dans une variable tableau et tester sur ce tableau.

    Maintenant tes C, Cp, M,... sont-ils le résultat d'une formule ou d'une saisie ?
    Si c'est le résultat d'une saisie tu as la cellule concernée dans Target. Dans ce cas plus besoin de boucle sur toutes les cellules et remplacer Cells(i, j). par Target.

    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. anne-sof Messages postés 5 Statut Membre
     
    Bonjour eric,

    Merci pour ton aide,
    Ca marche nettement mieux et c'est plus lisible :

    Par contre, voici cela necessite :
    1. tu saisis ton code (ex : C)
    2. tu fais entrer ou suivant
    3. il faut revenir sur la cellule pour que celle-ci se colorie

    Y-at-il un truc pour que cela se colorie en meme temps lorsque l'on change de cellule?

    voici le script :

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Plage As Range

    Set Plage = Range("G15:HZ75")

    Select Case (Target.Value)
    Case "C": Target.Interior.ColorIndex = 4
    Case "Cp": Target.Interior.ColorIndex = 45
    Case "M": Target.Interior.ColorIndex = 3
    Case "Su": Target.Interior.ColorIndex = 8
    Case "Sc": Target.Interior.ColorIndex = 33
    Case "F": Target.Interior.ColorIndex = 5
    Case "": Target.Interior.ColorIndex = 2
    End Select

    End Sub
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    et si tu répondais à la question Maintenant tes C, Cp, M,... sont-ils le résultat d'une formule ou d'une saisie ?
    0
    1. anne-sof Messages postés 5 Statut Membre
       
      Ce sont le résultat d'une saisie dans le tableau
      0
  8. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Utilise l'evenement Change plutôt que SelectionChange,
    et si tu veux que la macro n'agisse que sur la plage G15:HZ75 ajoute If intersect....then...

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("G15:HZ75")) Is Nothing Then Exit Sub
        Select Case (Target.Value)
        Case "C": Target.Interior.ColorIndex = 4
        Case "Cp": Target.Interior.ColorIndex = 45
        Case "M": Target.Interior.ColorIndex = 3
        Case "Su": Target.Interior.ColorIndex = 8
        Case "Sc": Target.Interior.ColorIndex = 33
        Case "F": Target.Interior.ColorIndex = 5
        Case "": Target.Interior.ColorIndex = 2
        End Select
    End Sub


    eric
    0
  9. g Messages postés 1285 Statut Membre 578
     
    Bonjour,

    La solution d' eriiic est à conjuguer au "plus que parfait"....

    Concernant la couleur "blanc" des cellules vidées, il est préférable d'utliser

    Case "": Target.Interior.ColorIndex = xlNone

    afin de conserver le quadrillage.

    Bonne journée.
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Tout à fait exact, merci pour le complément
      eric
      0
      1. anne-sof Messages postés 5 Statut Membre > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Et bien merci pour toute cette aide... comme quoi un PC + internet + des gens sympas et pas besoin de connaitre le VBA on copie/colle...

        Merci à tous

        Je passe la question au vert!

        Bonne soirée à tous
        0