Couleur de cellules et VBA
Résolu
amiralS
Messages postés
48
Statut
Membre
-
amiralS Messages postés 48 Statut Membre -
amiralS Messages postés 48 Statut Membre -
Bonjour,
Je souhaite avec du code VBA mettre en couleur les cellules non contiguës qui répondent à une condition.
J'ai une feuille de résultats d'une course et je ne veux pas appliquer la couleur choisie sur toute la ligne concernée par la condition mais seulement des cellules pas forcément contiguës sur cette ligne.
Sub MacroCouleur() 'Mettre des cellules en couleur en fonction du nom de l'établissement (MRiviere )dans la colonne E.
Ma macro ci dessous:
Dim finligne As Byte
Dim NumeroLigne As Byte
finligne = ActiveSheet.UsedRange.Rows.Count + 1 'Variable nombre de lignes
NumeroLigne = 2 'Variable ligne en cours
While NumeroLigne < finligne
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("B" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("E" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("F" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
NumeroLigne = NumeroLigne + 1
Wend
End Sub
Pour faire court comment je peux mettre dans un seul If les 3 ci-dessus?
Merci pour votre réponse.
amiralS
Je souhaite avec du code VBA mettre en couleur les cellules non contiguës qui répondent à une condition.
J'ai une feuille de résultats d'une course et je ne veux pas appliquer la couleur choisie sur toute la ligne concernée par la condition mais seulement des cellules pas forcément contiguës sur cette ligne.
Sub MacroCouleur() 'Mettre des cellules en couleur en fonction du nom de l'établissement (MRiviere )dans la colonne E.
Ma macro ci dessous:
Dim finligne As Byte
Dim NumeroLigne As Byte
finligne = ActiveSheet.UsedRange.Rows.Count + 1 'Variable nombre de lignes
NumeroLigne = 2 'Variable ligne en cours
While NumeroLigne < finligne
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("B" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("E" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("F" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
NumeroLigne = NumeroLigne + 1
Wend
End Sub
Pour faire court comment je peux mettre dans un seul If les 3 ci-dessus?
Merci pour votre réponse.
amiralS
A voir également:
- Récupérer le code couleur rgb d'une cellule excel
- Excel cellule couleur si condition texte - Guide
- Code ascii - Guide
- Liste déroulante excel - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Excel somme si couleur cellule - Guide
3 réponses
Bonjour,
c'est ça que tu cherches?
Pourquoi ne pas utiliser simplement la MFC?
While NumeroLigne < finligne If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("B" & NumeroLigne).Interior.Color = RGB(0, 255, 0) Range("E" & NumeroLigne).Interior.Color = RGB(0, 255, 0) Range("F" & NumeroLigne).Interior.Color = RGB(0, 255, 0) end if NumeroLigne = NumeroLigne + 1 Wend
c'est ça que tu cherches?
Pourquoi ne pas utiliser simplement la MFC?
Merci,
Le code fonctionne mais je me demandais s'il était possible de faire encore plus court et ne pas répéter à chaque fois .Interior.Color = RGB(0, 255, 0).
Par exemple:
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("A" & NumeroLigne, "I" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
Dans ce cas toutes les cellules contigües de "E" à "I" sont remplies en vert, la virgule sert de séparateur.
Entre les parenthèses après Then Range n'est il pas possible de mettre des séparateurs pour indiquer quelles cellules je veux remplir en vert?
Je n'ai pas pensé à la MFC et je ne vois pas quelle règle je devrais adopter.
Merci pour ton aide
Le code fonctionne mais je me demandais s'il était possible de faire encore plus court et ne pas répéter à chaque fois .Interior.Color = RGB(0, 255, 0).
Par exemple:
If Range("E" & NumeroLigne).Value = "MRiviere" Then Range("A" & NumeroLigne, "I" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
Dans ce cas toutes les cellules contigües de "E" à "I" sont remplies en vert, la virgule sert de séparateur.
Entre les parenthèses après Then Range n'est il pas possible de mettre des séparateurs pour indiquer quelles cellules je veux remplir en vert?
Je n'ai pas pensé à la MFC et je ne vois pas quelle règle je devrais adopter.
Merci pour ton aide
Bonjour
Option Explicit
'--------------------
Sub MacroCouleur() 'Mettre des cellules en couleur en fonction du nom de l'établissement (MRiviere )dans la colonne E.
Dim finligne As Byte
Dim NumeroLigne As Byte
Dim Nbre As Byte, Cptr As Byte
finligne = ActiveSheet.UsedRange.Rows.Count + 1 'Variable nombre de lignes
NumeroLigne = 2 'Variable ligne en cours
'on ne boucle le nbre de fpois où il y a MRiviere
Nbre = Application.CountIf(Columns("E"), "MRiviere")
If Nbre > 0 Then
For Cptr = 1 To Nbre
NumeroLigne = Columns("E").Find("MRiviere", Cells(NumeroLigne, "E"), xlValues).Row
Range("B" & NumeroLigne & ",E" & NumeroLigne & ",F" & NumeroLigne).Interior.Color = RGB(0, 255, 0)
Next
End If
End Sub