Colorier des lignes sous condition VBA (sans MEFC)

kalenjiman

XLDnaute Nouveau
Bonjour,

J'ai parcouru le Forum, j'ai trouvé des pistes me je ne parvient pas au résultat souhaité :mad:.

Je souhaite colorier les cellules N1 à P1 en fonction du texte saisie en N1 et ainsi de suite pour la ligne 2. Je ne peut pas utiliser les MEFC car j'ai 6 codes couleur.

Ci dessous un exemple de ce que je souhaiterais obtenir.

Merci de votre aide
 

Pièces jointes

  • Exemple Conditions VBA.xls
    18 KB · Affichages: 340

GeoTrouvePas

XLDnaute Impliqué
Re : Colorier des lignes sous condition VBA (sans MEFC)

Essaye ce code :

Code:
Sub couleur()

i = 2

While Cells(i, 14) <> ""

With Range(Cells(i, 14), Cells(i, 17))

    If Cells(i, 14) = "Service1" Then
        .Interior.ColorIndex = 55
    Else
        If Cells(i, 14) = "Service2" Then
            .Interior.ColorIndex = 10
        Else
            If Cells(i, 14) = "Service3" Then
                .Interior.ColorIndex = 6
            Else
                If Cells(i, 14) = "Service4" Then
                    .Interior.ColorIndex = 38
                Else
                    If Cells(i, 14) = "Service5" Then
                        .Interior.ColorIndex = 44
                    Else
                        If Cells(i, 14) = "Service6" Then
                            .Interior.ColorIndex = 2
                        End If
                    End If
                End If
            End If
        End If
    End If
End With

i = i + 1

Wend

End Sub

Je suis pas sûr d'avoir repris les mêmes couleurs que toi mais en tout cas ça marche.

Bonne journée

Edit : Petite modif pour colorer tout la ligne et non pas la première cellule
 

Excel-lent

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

Bonjour Kalenjiman,

Voici ci-dessous le code pour colorier une cellule, je te laisse l'adapter à ton cas, et si tu as besoin d'aide pour l'adapter et/ou le simplifier n'hésite pas.

Code:
Sub CouleurCelluleA1()

    
    If Range("A1") = "Service1" Then
        With Range("A1")
            .Interior.ColorIndex = 55
            .Font.ColorIndex = 2
        End With
    End If
    
    If Range("A1") = "Service2" Then
        With Range("A1")
            .Interior.ColorIndex = 10
            .Font.ColorIndex = 2
        End With
    End If
            
    If Range("A1") = "Service3" Then
        With Range("A1")
            .Interior.ColorIndex = 6
            .Font.ColorIndex = 1
        End With
    End If
    
    If Range("A1") = "Service4" Then
        With Range("A1")
            .Interior.ColorIndex = 38
            .Font.ColorIndex = 2
        End With
    End If
    
    If Range("A1") = "Service5" Then
        With Range("A1")
            .Interior.ColorIndex = 45
            .Font.ColorIndex = 2
        End With
    End If
    
    If Range("A1") = "Service6" Then
        With Range("A1")
            .Interior.ColorIndex = 2
            .Font.ColorIndex = 1
        End With
    End If

End Sub

Cordialement

Edition : bonjour GeoTrouvePas, je t'avais pas vu. Je vois que nous sommes parti sur la même idée, sauf que pour ma part j'ai mis les couleurs de fond exactes, traité également la couleur de la police, mais pour la gestion des cellules j'ai laissé faire notre ami (faut bien qu'il mette les mains dans le camboui!)
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

bonjour kalenjiman GeoTrouvePas Excel-lent le forum
un autre code.... couleur a adapter!!

Code:
Sub es()
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, 14).End(xlUp).Row
If Cells(i, 14) = "Service1" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 55
If Cells(i, 14) = "Service2" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 10
If Cells(i, 14) = "Service3" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 6
If Cells(i, 14) = "Service4" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 38
If Cells(i, 14) = "Service5" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 44
If Cells(i, 14) = "Service6" Then Range(Cells(i, 14), Cells(i, 17)).Interior.ColorIndex = 2
Next i
End Sub
 
G

Guest

Guest
Re : Colorier des lignes sous condition VBA (sans MEFC)

Code:
Bonjour le fil

Proposition,

Code:
Sub AieLesCouleurs()
  Dim c As Range
  Dim Services, Couleurs, idx
  Services = Array("Service1", "Service2", "Service3", "Service4", "Service5", "Service6")
  Couleurs = Array(55, 10, 6, 38, 45, 2)
  For Each c In Intersect(Range("N2:N" & Rows.Count), Range("N2").CurrentRegion)
     idx = Application.Match(c.Text, Services, 0)
     If Not IsError(idx) Then c.Resize(, 4).Interior.ColorIndex = Couleurs(idx - 1)
   Next c
End Sub
[Edit]
Ou
Code:
 Sub ReLesCouleurs()
    Dim t, idx
    Dim c As Range
    t = Array(Array("Service1", 55), Array("Service2", 10), Array("Service3", 6), Array("Service4", 38), Array("Service5", 45), Array("Service6", 2))
    For Each c In Intersect(Range("N2:N" & Rows.Count), Range("N2").CurrentRegion)
        idx = Application.VLookup(c, t, 2)
        If Not IsError(idx) Then c.Resize(, 4).Interior.ColorIndex = idx
    Next c
End Sub
A+
 
Dernière modification par un modérateur:

Efgé

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

Bonjour à tous,
Déja beaucoup de solutions, mais comme j'ai fait quelque chose...
A mettre dans le code de la feuille (dans mon exemple la feuille2)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("N2:N65536") Is Nothing And Target.Count = 1 Then
Pol = 2
    Select Case Target '.Value
        Case "Service1"
            Coul = 55
        Case "Service2"
            Coul = 10
        Case "Service3"
            Coul = 6
        Case "Service4"
            Coul = 38
        Case "Service5"
            Coul = 44
        Case Else
            Coul = xlNone
            Pol = 1
    End Select
With Range(Cells(Target.Row, 14), Cells(Target.Row, 17))
.Interior.ColorIndex = Coul
.Font.ColorIndex = Pol
End With
End If
End Sub
Cordialement
 

Pièces jointes

  • Exemple_Conditions_VBA(2).zip
    13 KB · Affichages: 247

kalenjiman

XLDnaute Nouveau
Re : Colorier des lignes sous condition VBA (sans MEFC)

Merci pour toutes vos réponses, j'ai testé chacune d'entre elles. Les solutions qui me conviennent le plus sont celle d'Efgé et celle de GeoTrouvePas.

Cependant dans la colonne N j'ai des formules et je souhaiterais changer les couleur des lignes seulement si la valeur de la formule est service1, service2... Et là vos exemples ne marche plus :(
 

Efgé

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

Re,
Pour adapter les codes proposés, il faudrait un fichier exemple plus proche de la réalité et savoir quelles cellules sont saisies "à la main".
A te re lire
Cordialement
 

kalenjiman

XLDnaute Nouveau
Re : Colorier des lignes sous condition VBA (sans MEFC)

Re,
Pour adapter les codes proposés, il faudrait un fichier exemple plus proche de la réalité et savoir quelles cellules sont saisies "à la main".
A te re lire
Cordialement

Voici un fichier proche de la réalité (le vrai tableau fait 2000 lignes). La difficulté est qu'il y a parfois des lignes vide (sans valeur retournée dans la colonne catégories). De plus, je dois pouvoir modifier dynamiquement la couleur d'une ligne si une Ref change (donc la catégorie également).

Merci de votre temps précieux.
 

Pièces jointes

  • Classeur2.xls
    45 KB · Affichages: 252
  • Classeur2.xls
    45 KB · Affichages: 264
  • Classeur2.xls
    45 KB · Affichages: 263

Efgé

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

Bonjour kalenjiman,
Je suis parti du principe que la colonne B est remplie manuellement.
Si vous saisissez une nouvelle référence la mise en forme se fera sur les colonne N à Q
Je n'ai pas mis toutes les possibilités, vous pourrez finaliser en recopiant le principe (utilisation de Case... ).
J'ai mis un peu de temps à comprendre que la feuill1 était la feuille 2 et inversement...:rolleyes:. J'en ai renomée une (Tableau) pour m'y retrouver..
Cordialement
 

Pièces jointes

  • kalenjiman (2).zip
    16.5 KB · Affichages: 186

Efgé

XLDnaute Barbatruc
Re : Colorier des lignes sous condition VBA (sans MEFC)

Décidément, aujourd'hui je devrais tourner sept foi mes doigts avant de poster :mad:
Il faut modifier une ligne:
remplacer
Code:
If Not Application.Intersect(Target, plg) Is Nothing Then
par
Code:
 If Not Application.Intersect(Target, plg) Is Nothing [COLOR=red][B]And Target.Count = 1[/B][/COLOR] Then
Désolé :eek:
Cordialement
 

kalenjiman

XLDnaute Nouveau
Re : Colorier des lignes sous condition VBA (sans MEFC)

Merci Efgé,

Mais cela ne fonctionne pas comme je l'espérait. A la différence des MEFC le changement de couleur n'est pas vraiment dynamique. J'ai donc fini par utiliser les 3 + 1 couleur avec les MEFC.


Merci pour tout, je grade de coté de code qui me sera sur utile pour un autre projet.
 

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 227
dernier inscrit
maloalek