Autres Cellule en couleur en fonction du contenu

alain18

XLDnaute Occasionnel
Bonsoir,
En VBA serait il possible de mettre les cellules d'une colonne en couleur en fonction d'un groupe de mots (NON PAYE) non contenu dans la cellule.
Le nombre de lignes concernées sera très variable.
Le fichier joint est plus explicite.
Merci de votre aide.
Bonne soirée.
 

Pièces jointes

  • Test couleur cellule.xls
    18 KB · Affichages: 7

laurent950

XLDnaute Accro
Bonsoir,
Exemple a adapter
VB:
Sub Macro1()
'
For i = 5 To 20
    If Not Cells(i, 3) Like "*NON PAYE*" Then

    With Cells(i, 3).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
Next i
End Sub

cdt
 

Calvus

XLDnaute Barbatruc
Bonsoir alain18, le forum,

Mettre ce code dans le code de la feuille 1.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
If Not Intersect(Range("C5:C" & Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row), Target) Is Nothing And Target.Count = 1 Then
    For i = 5 To Cells(Rows.Count, 3).End(xlUp).Row
        If Not Cells(i, 3) Like "*" & "NON PAYE" Then Cells(i, 3).Interior.Color = 65535
    Next i
End If
End Sub

A+

Edit : bonsoir laurent950
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Une variante
(sans doute l'influence de l'air du temps: Régime, régime, régime partout dans les magazines)
VB:
Sub Macro2()
Dim i&
For i = 5 To 20
Cells(i, 3).Interior.Color = IIf(InStr(Cells(i, 3), "NON PAYE"), xlNone, 65535)
Next i
End Sub
Et une autre variante (pour l'evenementielle)
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, Me.Columns("C:C")) Is Nothing And T.Row >= 5 Then
T.Interior.Color = IIf(InStr(T.Text, "NON PAYE"), xlNone, 65535)
End If
End Sub

NB: codes testés un dimanche matin, donc peut-être des effets de bord à l'usage ;)
 
Dernière édition:

alain18

XLDnaute Occasionnel
Merci à tous
Cette coloration de cellule étant effectuée en fin d'une autre macro qui effectue des tris et des déplacements de colonnes, j’opterais pour les macros de Staple ou Laurent950 mais il faudrait que la consigne ne se limite pas à For i = 5 to 20 mais de la ligne 5 à la dernière cellule non vide de la colonne en question.
Si cela est possible bien sûr !
Cordialement.
 

Calvus

XLDnaute Barbatruc
Bonjour,

Merci à tous
Cette coloration de cellule étant effectuée en fin d'une autre macro qui effectue des tris et des déplacements de colonnes, j’opterais pour les macros de Staple ou Laurent950 mais il faudrait que la consigne ne se limite pas à For i = 5 to 20 mais de la ligne 5 à la dernière cellule non vide de la colonne en question.
Si cela est possible bien sûr !
Cordialement.

C'est exactement ce que fait mon code, mais il n'a pas l'air de t'intéresser plus que ça...
 

Calvus

XLDnaute Barbatruc
Hello mon ami,

Evidemment !
Ma remarque ne s'adressait pas à toi, et je suis content que tu reprennes mes codes comme tu as l'habitude de le faire, cela me permet de progresser.
D'ailleurs j'aurais pu penser à IIf, mais comme Instr ne me vient pas naturellement, du coup c'était difficile de penser à IIF...
Le serpent qui se mord la queue !

C'est sûr que je ne vais plus l'oublier ce sacré Instr ! ;)

Bonne journée :)
 

alain18

XLDnaute Occasionnel
Bonjour,



C'est exactement ce que fait mon code, mais il n'a pas l'air de t'intéresser plus que ça...
Oui Calvus votre macro fonctionne parfaitement à chaque modification et jusqu'à la dernière cellule non vide sur un fichier simple sans autre macro qui précède, mais il faudrait qu'elle puisse se déclencher seulement à la fin d'une autre macro que j'ai mis en place et qui effectue des déplacements de colonnes, des créations de nouvelles colonnes avec des formules, etc....
Dans ces conditions, j'observe que votre macro a bien effectué son travail a un moment précis mais comme il y a des tris dans la colonne concernée ce sont toutes les cellules qui (en fin de ma macro) prennent la couleur jaune.
C'est la raison pour laquelle votre suggestion est parfaite mais à la fin de toutes modifications du fichier.
Cela n'est peut être pas possible.
Je tiens une nouvelle fois à vous remercier pour votre soutien.
 

alain18

XLDnaute Occasionnel
Bonjour
Peut être une idée pour que la macro que vous proposez puisse s'effectuer jusqu'à la dernière cellule non vide ?
Merci.

Sub Macro2()
Dim i&
For i = 5 To 20
Cells(i, 3).Interior.Color = IIf(InStr(Cells(i, 3), "NON PAYE"), xlNone, 65535)
Next i
End Sub
 

Discussions similaires

Réponses
1
Affichages
204
Réponses
5
Affichages
507

Statistiques des forums

Discussions
312 081
Messages
2 085 157
Membres
102 798
dernier inscrit
Choky13