Excel: Aplatir une mise en forme conditionnel

Fermé
cybergate Messages postés 5 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 28 juillet 2008 - 13 mars 2008 à 14:54
 cybergate - 14 mars 2008 à 15:52
Bonjour,

J'ai un fichier excel avec 240 x 600 cases contenant chacune un nombre de 1 à 10. Je veux colorer toutes les cases 1 en rouge, les 2 en bleu, etc. , donc 10 couleurs.
Ces cases étant réparties aléatoirement, j'utilise la mise en forme conditionnelle.

Si les plages à colorer étaient nettement délimitées sur ma feuille, il me suffirait de sélectionner toutes les cases contenant des 1, puis de faire ma mise en forme conditionnelle, et de faire la même opération pour mes 10 valeurs.

Mais non, mes valeurs sont réparties aléatoirement: je dois donc faire ma mise en forme conditionnelle sur l'ensemble de ma sélection, et je bute sur le nombre limite de conditions, fixé à 3 sur Excel.

MA QUESTION EST:

Est-il possible , une fois 3 conditions posées sur l'ensemble de ma sélection, de faire un copier/coller vers un autre document, tout en:
- conservant la coloration des cellules concernées, mais en
- faisant disparaitre leur statut de cellule à mise en forme conditionnelle?

Une sorte d'équivalent du collage spécial "valeur", qui colle les valeurs des cellules copiées, mais fait disparaitre leur statut "formule".

Ca me permettrait de repartir avec une "image" de cette première feuille colorée avec mise en forme conditionnelle, et de faire d'autres mises en forme conditionnelle.

Voilà, j'espère avoir été clair (quand c'est notre problème, ça a l'air toujours clair, mais quand on lit...)

Merci,

Matthieu de Cybergate.
A voir également:

6 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
13 mars 2008 à 15:14
Bonjour,

Je n'ai pas la réponse à ta question concernant la mise en forme conditionnelle, mais avec le code Visual Basic ci-dessous (macro), cela devrait faire ce que tu désires:
Sub color_cellule()

Dim Valeur As Integer
Dim Index As Long

For Index = 1 To Range("a65536").End(xlUp).Row
    Valeur = Cells(Index, 1).Value
    Cells(Index, 1).Interior.ColorIndex = 25 + Valeur
Next Index
End Sub


Par chaque cellule, la fonction met la couleur intérieur égale à 25 (dans mon exemple, mais cela peut être autre chose) plus la valeur de la cellule, c-à-d 26 pour 1, 27 pour 2,.... 35 pour 10 .....

J'espère que cela pourra t'aider.

A plus
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
13 mars 2008 à 15:18
En complément de Christounet, si tu veux choisir les codes couleurs en fonctions des valeurs des cellules, tu peux coller ça dans le code de ta feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n, m As Integer
For n = 1 To ActiveSheet.UsedRange.Rows.Count
For m = 1 To ActiveSheet.UsedRange.Columns.Count
Dim val
val = Cells(n, m).Value
Select Case val
Case 1
Cells(n, m).Interior.ColorIndex = 3
Case 2
Cells(n, m).Interior.ColorIndex = 5
Case 3
Cells(n, m).Interior.ColorIndex = 7
Case 4
Cells(n, m).Interior.ColorIndex = 6
Case 5
Cells(n, m).Interior.ColorIndex = 4
Case 6
Cells(n, m).Interior.ColorIndex = 2
Case 7
Cells(n, m).Interior.ColorIndex = 8
Case 8
Cells(n, m).Interior.ColorIndex = 9
Case 9
Cells(n, m).Interior.ColorIndex = 10
Case 10
Cells(n, m).Interior.ColorIndex = 11
End Select
Next
Next

End Sub
0
cybergate Messages postés 5 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 28 juillet 2008
13 mars 2008 à 15:50
Merci les gars, de cette réponse très rapide.

Je n'ai que peu de notions de VBA, et je cherchais plutôt des astuces par fonctions intégrées à Excel.

Cela dit, je comprends à peu près la proposition de Christounet (sans maîtriser la syntaxe, mais Google aidera), et moins celle de Fxbrg.

Là où je suis un peu crétin, c'est que j'aurais dû expliquer mon problème plus à fond.

En fait, chaque couleur correspond à un intervalle, et non à un nombre:

ex: toutes les cases contenant une valeur comprise entre 1,01 et 1,5 doivent être en rouge, celles entre 1.51 et 2 doivent être en vert,etc., le tout pour 10 couleurs différentes.

Désolé...

Matthieu.
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
13 mars 2008 à 16:20
Pas très joli mais ça marche... :-)

Joue avec les codes couleurs et les intervalles...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n, m As Integer
For n = 1 To ActiveSheet.UsedRange.Rows.Count
For m = 1 To ActiveSheet.UsedRange.Columns.Count
Dim val
val = Cells(n, m).Value
If val > 6 Then
Cells(n, m).Interior.ColorIndex = 10
Else
If val > 5.5 Then
Cells(n, m).Interior.ColorIndex = 9
Else
If val > 5 Then
Cells(n, m).Interior.ColorIndex = 8
Else
If val > 4.5 Then
Cells(n, m).Interior.ColorIndex = 7
Else
If val > 4 Then
Cells(n, m).Interior.ColorIndex = 6
Else
If val > 3.5 Then
Cells(n, m).Interior.ColorIndex = 5
Else
If val > 3 Then
Cells(n, m).Interior.ColorIndex = 4
Else
If val > 2.5 Then
Cells(n, m).Interior.ColorIndex = 3
Else
If val > 2 Then
Cells(n, m).Interior.ColorIndex = 2
Else
If val > 1.5 Then
Cells(n, m).Interior.ColorIndex = 1
Else
If val > 1 Then
Cells(n, m).Interior.ColorIndex = 0
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next
Next
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
13 mars 2008 à 16:36
Bonjour,

Une autre version du code
Sub color_cellule()

Dim Ligne As Long
Dim Colonne As Long

For Ligne = 1 To ActiveSheet.UsedRange.Rows.Count
    For Colonne = 1 To ActiveSheet.UsedRange.Columns.Count
        Select Case Cells(Ligne, Colonne).Value
            Case Is < 1.51
                Cells(Ligne, Colonne).Interior.ColorIndex = 32
            Case Is < 2.01
                Cells(Ligne, Colonne).Interior.ColorIndex = 35
            Case Is < 2.51
                Cells(Ligne, Colonne).Interior.ColorIndex = 37
            Case Is < 3.01
                Cells(Ligne, Colonne).Interior.ColorIndex = 39
        End Select
    Next Colonne
Next Ligne
End Sub


Pour chaque ligne (Row), pour chaque colonne (Columns), on teste la valeur , si c'est plus petit que 1.51, couleur 32 , plus petit que 2.01 couleur 35, ....

Pour la valeur des couleurs, tu trouveras ici la correspondance entre la couleur et le nombre (C'est en anglais mais les couleurs sont visibles).

A plus
0
Merci les gars, je m'y attaque ce week-end.

Matthieu.
0