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

reperage de la couleur d'une cellule

philmaure

XLDnaute Impliqué
bonjour,
sachant qu'une couleur verte correspond dans le VB : Color = 5287936
comment puis tester en vb la couleur d'une cellule pour mettre une indication dans une autre cellule

exemple: si la cellule A12 est verte alors mettre en B1 le chiffre 2

Merci pour aide
Cdlt
philippe
 

Pièces jointes

  • TEST.xlsm
    13.3 KB · Affichages: 15
  • TEST.xlsm
    13.3 KB · Affichages: 15

thebenoit59

XLDnaute Accro
Re : reperage de la couleur d'une cellule

Bonjour philmaure.

Code:
Sub TestCouleur()
Dim c As Variant
Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
        For Each c In Range("b:b")
            If c.Interior.Color = 5287936 Then d(c.Row) = 2
        Next c
        For Each c In d.keys
            Cells(c, 1).Value = d(c)
        Next c
End Sub
On vérifie si l'intérieure de la cellule = 5287936, si c'est le cas, on enregistre le n° de la ligne dans un dictionary avec comme item 2.
On boucle le dictionary en ajoutant la valeur 2 aux cellules de la colonne A.
 

philmaure

XLDnaute Impliqué
Re : reperage de la couleur d'une cellule

bonjour et un grand merci pour la solution

A quel endroit indique t-on de mettre le chiffre 2 dans la colonne A parce que parfois je souhaiterai l'indiquer dans une autre colonne ?

Cdlt
philippe
 

philmaure

XLDnaute Impliqué
Re : reperage de la couleur d'une cellule

re bonjour,

en reprenant mon fichier test, a ton la possibilité de tester plusieurs couleurs ?
Par exemple si c'est vert on met 2 si c'est rouge ont 3 ?

Cdlt
philippe
 

thebenoit59

XLDnaute Accro
Re : reperage de la couleur d'une cellule

Bien sûr :
Code:
        For Each c In Range("b:b")
            If c.Interior.Color = "Vert" Then d(c.Row) = 2
            If c.Interior.Color = "Rouge" Then d(c.Row) = 3
        Next c
Remplace par les codes couleurs que tu souhaites.
 

thebenoit59

XLDnaute Accro
Re : reperage de la couleur d'une cellule

Remplace plutôt ainsi :
Code:
Sub TestCouleur()
Dim c As Variant
Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
        For Each c In Range("b:b")
            If c.Interior.Color = 5287936 Then
                d(c.Row) = 2
            ElseIf c.Interior.Color = 5287935 Then
                d(c.Row) = 3
            End If
        Next c
        For Each c In d.keys
            Cells(c, 1).Value = d(c)
        Next c
End Sub
Ca évitera de tester la seconde condition si la première est trouvée.
 

Discussions similaires

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