Excel: Aplatir une mise en forme conditionnel
cybergate
Messages postés
5
Statut
Membre
-
cybergate -
cybergate -
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.
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:
- Excel: Aplatir une mise en forme conditionnel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
6 réponses
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:
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
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
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
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
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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Une autre version du code
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
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