Trouver une couleur de fond de cellule.

Le
Alf
Bonjour à tous,
De retour pour solliciter votre aide.

J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (on =
va dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans u=
ne colonne donnée.

Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #26455976
Bonjour Alf,
Pourrais-tu, par exemple, ton tableau = A2:E10
For each c in range("A2:E10")
IF c.interior.colorindex= orange (c'est mieux :RGB(220, 220, 220) par ex)
then
derL= Cells(Rows.Count, 6).End(xlUp).Row
range("F"&derL).value = l'adresse de c
ou mieux, tu attends la solution que Denis va te donner. Elle sera
meilleure. -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Alf" a écrit dans le message de groupe de discussion :

Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (on va
dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une
colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf
Michd
Le #26455978
Bonjour,
Un petit exemple :
'--------------------------------------------------------
Sub test()
Dim MaCouleur As Long
Dim C As Range
'Remplace A1 par l'adresse d'une cellule qui est colorée
'Ceci pour extraire la valeur de la couleur. Si tu connais
'cette valeur, tu peux l'attribuer en dur à la variable
'Macouleur
MaCouleur = Worksheets("Feuil1").Range("A1").Interior.Color
'une boucle sur la plage de cellules que tu veux
For Each C In Worksheets("Feuil1").Range("C5:C20")
If C.Interior.Color = MaCouleur Then
'action à déterminer
End If
Next
End Sub
'--------------------------------------------------------
MichD
Alf
Le #26455980
Le samedi 16 décembre 2017 12:00:11 UTC+1, Alf a écrit :
Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (o n va dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf

Je teste toujours toutes les solutions Jacquouille...:-)
Pas de souci pour moi, avec vous je sais que je vais avoir des tas de solut ions...
Alf
Le #26455995
Le samedi 16 décembre 2017 12:00:11 UTC+1, Alf a écrit :
Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (o n va dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf

Toutes les solutions marchent....
Mais c'est un peu long si on a 50000 lignes.
J'ai essayé avec ce code, mais il ne me renvoie que des lignes où les cellules sont sans couleur de fond:
'----------
Set C = Worksheets("Feuil1").Range("A:A") _
.Find((Application.FindFormat.Interior.ColorIndex = 44), LookAt:=xl Part, SearchFormat:=True)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
'Traitement quelconque
ligne=c.row
Set C = Range("A:A").Find((Application.FindFormat.Interior.Col orIndex = 45), C, , xlPart, , xlNext, True)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
Jacquouille
Le #26456012
Re
Si je puis me permettre, pour ce qui est des couleurs, je préfère utiliser
le système RGB car les couleurs des palettes proposées varient parfois d'un
PC à l'autre et d'une version à l'autre.
Même si je conçois que c'est plus facile d'utiliser le n° d'index.
----------------------
Pour trouver l'index de ton "orange":
Sub trouver_couleur()
Dim xx As Variant
xx = Range("f4").Interior.ColorIndex
MsgBox xx
End Sub
-------------------------
Sub chercher_couleur_ter()
Dim A As Variant
Dim R As Variant
Dim g As Variant
Dim B As Variant
For X = 1 To 21 Step 5
For Each C In Range("A" & X & ":h" & X)
A = Right("000000" & Hex(C.Interior.Color), 6)
R = Evaluate("HEXDEC(""" & Right(A, 2) & """)")
g = Evaluate("HEXDEC(""" & Mid(A, 3, 2) & """)")
B = Evaluate("HEXDEC(""" & Left(A, 2) & """)")
'MsgBox r & ", " & g & ", " & b
C.Offset(3, 0) = C.Interior.ColorIndex
C.Offset(4, 0) = R & ", " & g & ", " & B
Next
Next
End Sub
------------------------------------
ou avec le num de la couleur:
Sub Couleur_trouver()
X = Range("j1").Interior.Color
'=numéro de la couleur, mais pas index ni RGB
Range("b2") = X
End Sub
------------
Toutes ces macros sont issues de ce forum où elles ont été publiées par
d'éminent savants autres que moi ....-))
Pour ton problème de lignes blanches, il est possible que la définition de
ta couleur ne soit pas bonne.
Je vois aussi que tu sautes de l'index 44 au 45.
Vois ce fichier en annexe CJOINT, fichier réalisé grâce à l'aide des Grands
Répondeurs d'ici-bas, que je remercie encore.
https://www.cjoint.com/c/GLqrHDxoeKi
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Alf" a écrit dans le message de groupe de discussion :

Le samedi 16 décembre 2017 12:00:11 UTC+1, Alf a écrit :
Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (on va
dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une
colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf

Toutes les solutions marchent....
Mais c'est un peu long si on a 50000 lignes.
J'ai essayé avec ce code, mais il ne me renvoie que des lignes où les
cellules sont sans couleur de fond:
'----------
Set C = Worksheets("Feuil1").Range("A:A") _
.Find((Application.FindFormat.Interior.ColorIndex = 44), LookAt:=xlPart,
SearchFormat:=True)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
'Traitement quelconque
ligne=c.row
Set C =
Range("A:A").Find((Application.FindFormat.Interior.ColorIndex = 45), C, ,
xlPart, , xlNext, True)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
Michd
Le #26456029
Il y a ceci :
Cette ligne de code est là simplement pour trouver
le code "Color" que tu cherches. Si tu désires, tu peux
utiliser la propriété ColorIndex...
Si tu connais la valeur recherchée, tu peux l'indiquer
directement
Exemple :
'En supposant que A1 a la couleur de fond que tu recherches
.Interior.Color = Sh.Range("A1").Interior.Color
'ou simplement :
.Interior.Color = 255 'la valeur seulement
'--------------------------------------------------------------------
Sub Rechercher_Format_Cellule()
Dim LeCellFormat As CellFormat
Dim Trouve As Range, Adr As String
Dim Sh As Worksheet, Rg As Range
'Nom feuille à adapter
Set Sh = Worksheets("Feuil1")
Set LeCellFormat = Application.FindFormat
With LeCellFormat
.Clear
.Interior.Color = Sh.Range("A1").Interior.Color
End With
With Sh
'Définir la plage de cellules
Set Rg = .Range("C5:C25")
End With
With Rg
Set Trouve = .Find(What:="", _
Searchdirection:=xlNext, _
SearchFormat:=True)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
With Trouve
MsgBox Trouve.Address
'Ton code pour faire ce que
'tu désires avec ces cellules
End With
Set Trouve = .Find(What:="", _
After:=Trouve, SearchFormat:=True)
Loop Until Trouve.Address = Adr Or Trouve Is Nothing
End If
End With
End Sub
'--------------------------------------------------------------------
MichD
"Alf" a écrit dans le message de groupe de discussion :

Le samedi 16 décembre 2017 12:00:11 UTC+1, Alf a écrit :
Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (on va
dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une
colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf

Toutes les solutions marchent....
Mais c'est un peu long si on a 50000 lignes.
J'ai essayé avec ce code, mais il ne me renvoie que des lignes où les
cellules sont sans couleur de fond:
'----------
Set C = Worksheets("Feuil1").Range("A:A") _
.Find((Application.FindFormat.Interior.ColorIndex = 44), LookAt:=xlPart,
SearchFormat:=True)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
'Traitement quelconque
ligne=c.row
Set C =
Range("A:A").Find((Application.FindFormat.Interior.ColorIndex = 45), C, ,
xlPart, , xlNext, True)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
Alf
Le #26456091
Le samedi 16 décembre 2017 12:00:11 UTC+1, Alf a écrit :
Bonjour à tous,
De retour pour solliciter votre aide.
J'ai une feuille avec plusieurs lignes et plusieurs colonnes.
Certaines cellules ont un fond de cellule avec une couleur donnée (o n va dire orange).
Je voudrais rechercher ces cellules spécifiques mais uniquement dans une colonne donnée.
Je me demande si la méthode .find peut être utilisée.
Merci pour votre aide
Alf

Tout est OK
Merci à tous pour votre aide
Publicité
Poster une réponse
Anonyme