Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fond de cellule en fonction du contenu

  • Initiateur de la discussion Initiateur de la discussion Lorine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lorine

XLDnaute Nouveau
Bonjour,

Je voudrais mettre le fond des cellules d'un tableau C31😀C41
en gris si elle contient "R"
en jaune si elle contient "M"
en bleu si elle contient "S"
en rouge si elle contient "W"
en orange si elle contient "k"

Ceci en code VBA car il y a plus 3 conditions.

merci à vous
 
Re : Fond de cellule en fonction du contenu

Bonjour Lorine
Message supprimé : réponse inappropriée.​
ROGER2327
#3383


13 Floréal An CCXVIII
2010-W17-7T15:55:26Z
 
Dernière édition:
Re : Fond de cellule en fonction du contenu

Bonjour le fil 🙂,
Un peu à la bourre sur ce coup là, mais tant qu'à faire, une petite sub pour connaitre le ColorIndex
Code:
Sub QuelleCouleur()
MsgBox Selection.Interior.ColorIndex
End Sub
Bonne soirée 😎
 
Re : Fond de cellule en fonction du contenu

Suite de #3
Message supprimé : réponse inappropriée.​
ROGER2327
#3384


13 Floréal An CCXVIII
2010-W17-7T16:08:20Z
 
Dernière édition:
Re : Fond de cellule en fonction du contenu

Re...
re
bonjour ROGER2327,JNP

pour quelle raison ? les codes deROGER2327 étant parfait aussi et celui de JNP est bon mais pour avoir le ColorIndex😉
Bonsoir carcharodon-carcharias,

Mon code était très différent du vôtre : lorsqu'on effaçait une valeur, ou qu'on mettait une autre lettre que R, M, S, W ou k, la couleur était supprimée.​
ROGER2327
#3386


13 Floréal An CCXVIII
2010-W17-7T16:18:45Z
 
Re : Fond de cellule en fonction du contenu

Re...
Ce faisant, vous commettez la même erreur que moi en supprimant la couleur pour les cellules vidées ou modifiées avec une valeur différente de R, M, S, W ou k.​
ROGER2327
#3387


13 Floréal An CCXVIII
2010-W17-7T16:23:08Z
 
Re : Fond de cellule en fonction du contenu

Bonjour,
je n'avais pas vue le vidage des couleures !!!

J'ai essayé cela :
Code:
If CEL.Value = "R" Then CEL.Interior.ColorIndex = 16
        If CEL.Value = "M" Then CEL.Interior.ColorIndex = 6
        If CEL.Value = "S" Then CEL.Interior.ColorIndex = 28
        If CEL.Value = "W" Then CEL.Interior.ColorIndex = 3
        If CEL.Value = "K" Then CEL.Interior.ColorIndex = 46
        If CEL.Value <> "R" & "M" & "S" & "W" & "K" Then CEL.Interior.ColorIndex = xlNone

Mais cela ne fonctionne pas !!!

Comment faire pour ne pas mettre de couleur si la valeur est différente de R ou M ou S ou W ou K ?
 
Re : Fond de cellule en fonction du contenu

Re...
Alors je RE-propose ce que vous avez refusé hier.
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim celCol, oCol As Range
   For Each oCol In Range("C31:C41").Cells
      Select Case oCol.Value
         Case "R": celCol = 15
         Case "M": celCol = 36
         Case "S": celCol = 34
         Case "W": celCol = 3
         Case "k": celCol = 45
         Case Else: celCol = xlNone
      End Select
      oCol.Interior.ColorIndex = celCol
   Next oCol
End Sub[/B][/COLOR]
ROGER2327
#3391


14 Floréal An CCXVIII
2010-W18-1T10:42:35Z
 
Re : Fond de cellule en fonction du contenu

Suite...
Et la version évènementielle :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   toto2 Intersect(Target, Range("C31:C41"))
End Sub[/B][/COLOR]
dans le module de la feuille concernée.
Code:
[COLOR="DarkSlateGray"][B]Sub toto2(r)
[COLOR="SeaGreen"]'[/COLOR]
   If r Is Nothing Then Exit Sub
[COLOR="SeaGreen"]'[/COLOR]
Dim celCol, oCol As Range
   For Each oCol In r.Cells
      Select Case oCol.Value
         Case "R": celCol = 15
         Case "M": celCol = 36
         Case "S": celCol = 34
         Case "W": celCol = 3
         Case "k": celCol = 45
         Case Else: celCol = xlNone
      End Select
      oCol.Interior.ColorIndex = celCol
   Next oCol
End Sub[/B][/COLOR]
dans un module standard quelconque.​
ROGER2327
#3392


14 Floréal An CCXVIII
2010-W18-1T10:52:22Z
 
Re : Fond de cellule en fonction du contenu

Re 🙂,
Pour être tout à fait objectif, s'il y avait une présentation type 1 ligne sur 2 en grisé, où un fond de couleur nous ne retrouverons jamais la couleur d'origine en modifiant le fond de la cellule 😛...
Donc, une solution qui fonctionne sous 2007 (à vérifier sur les versions antérieures pour la syntaxe) consiste à mettre uniquement la MFC correspondant au cas de la cellule, ce qui permet de conserver en mémoire la couleur d'origine.
Code:
Sub MFCSupérieureà3()
Dim Plage As Range, Cellule As Range, Couleur As Long
Set Plage = Sheets("Feuil1").Range("A1:E10")
For Each Cellule In Plage
Select Case Cellule.Value
Case "R"
Couleur = 13425125
Case "M"
Couleur = 65535
Case "S"
Couleur = 16764057
Case "W"
Couleur = 255
Case "k"
Couleur = 39423
Case Else
Couleur = 0
End Select
If Cellule.FormatConditions.Count <> 0 Then Cellule.FormatConditions.Delete
If Couleur <> 0 Then
Cellule.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""" & Cellule.Value & """"
Cellule.FormatConditions(1).Interior.Color = Couleur
End If
Next
End Sub
Bonne journée 😎
 
Re : Fond de cellule en fonction du contenu

Salut

et ainsi ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, [C31:C41]) Is Nothing Then Exit Sub
  Target.Interior.ColorIndex = xlNone
  If Target = "R" Then Target.Interior.ColorIndex = 16
  If Target = "M" Then Target.Interior.ColorIndex = 6
  If Target = "S" Then Target.Interior.ColorIndex = 28
  If Target = "W" Then Target.Interior.ColorIndex = 3
  If Target = "k" Then Target.Interior.ColorIndex = 46
End Sub

étant donné le nombre peu élevé de cas (s'excluant mutuellement ici), qu'ils soient tous testés ne ralentit pas trop la procédure.
Avec un nombre élevé de cas, la méthode "Select" ne les traitant que par un se révèlera plus performante en tant que temps (et pas besoin de rajouter des Exit Sub en bout de ligne de la première procédure pour la rendre plus rapide).
 
Re : Fond de cellule en fonction du contenu

Re 🙂,
@ Forum : sauf que c'est toute cette partie
Code:
Cellule.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""" & Cellule.Value & """"
Cellule.FormatConditions(1).Interior.Color = Couleur
qu'il va falloir ajouter à tes If, où passer par une variable...
Mais le cas étudié ne comporte que 10 cases à surveiller, je ne suis pas sûr que les performances soit très affectées...
Bonne journée 😎
 
Re : Fond de cellule en fonction du contenu

Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim plg, oCol As Range
   Set plg = Intersect(Target, Range("C31:C41"))
   If Not plg Is Nothing Then
      For Each oCol In plg.Cells
         oCol.Interior.ColorIndex = Array(xlNone, xlNone, 15, 36, 34, 3, 45)(InStr(1, "*RMSWk", oCol.Value, vbBinaryCompare))
      Next oCol
   End If
   Set plg = Nothing
End Sub[/B][/COLOR]
(Pour répondre objectivement au problème posé dans le message #1, et à rien d'autre.)​
ROGER2327
#3393


14 Floréal An CCXVIII
2010-W18-1T16:11:11Z
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
324
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…