Colorer des lignes suivant les lignes vides présentent.

Vich

XLDnaute Nouveau
Salut tout le monde,

Je requiert encore une fois votre aide dans le cadre de mon stage.

Mon tableau ce présente comme ceci :
Regarde la pièce jointe Forum.xlsx

J'aimerais colorer les lignes pour chaque référence de la colonne G différente sans, biens sur, colorer les lignes vides.

Pour finir comme cela :

Regarde la pièce jointe Forum2.xlsx

J'ai un bout de code qui ne fonctionne pourtant je pense l'algo bon :

Code:
    'Application de couleur / ref connecteur
    Dim J As Integer
    Dim NbCellsTotal As Integer
    NbCellsTotal = NbCells + NbLigneSautee 'Nombre de cellule non vide + nombre de ligne vide (deux variables qui viennent de méthodes précédentes)
    Dim Marqueur As Integer
    Marqueur = 2
    For J = 1 To NbCellsTotal
        If Range("I" & J) = "" Then
            Range("A" & Marqueur - 1 & ":J" & J + 1).Select
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 1 + Rnd([100000])
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
            Marqueur = J
        End If
    Next J

La fonction random pour les couleur est à revoir je sais pas encore comment m'y prendre pour faire des couleurs différentes mais le principale est que je puisse colorer les lignes comme je le désire.

Merci d'avance, Vich.
 

Pièces jointes

  • Forum.xlsx
    10.2 KB · Affichages: 61
  • Forum.xlsx
    10.2 KB · Affichages: 68
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Colorer des lignes suivant les lignes vides présentent.

Bonjour à tous,

Pour cela :

Code:
.Color = 1 + Rnd([100000])

tu peux le remplacer par ceci :

Code:
.ColorIndex= 47 ' pour le bleu ' 43 pour le vert ' 6 pour le jaune ' 3 pour le rouge

Bonne journée !
 

DoubleZero

XLDnaute Barbatruc
Re : Colorer des lignes suivant les lignes vides présentent.

Bonjour, Vich, JBARBE, le Forum,

En attendant mieux...

Code:
Option Explicit
Sub Lignes_colorer()
    Dim n As Variant
    Dim i As Long
    Application.ScreenUpdating = False
    n = 10942496
    For i = 2 To Range("A65536").End(xlUp).Row
        If Range("A" & i).Value <> "" Then Range("A" & i).CurrentRegion.Resize(, 10).Interior.Color = n
        n = n + 24
    Next
    Rows(1).Interior.ColorIndex = xlNone
    Application.ScreenUpdating = False
End Sub

A bientôt :)
 

Vich

XLDnaute Nouveau
Re : Colorer des lignes suivant les lignes vides présentent.

Merci encore Double Zero =)

J'vais me débrouiller pour changer les couleurs car elle sont trop identiques mais la macr omarche très bien, merci encore.
 

Vich

XLDnaute Nouveau
Re : Colorer des lignes suivant les lignes vides présentent.

n = 10940000
For b = 2 To Range("A65536").End(xlUp).Row
If Range("A" & b).Value <> "" Then Range("A" & b).CurrentRegion.Resize(, 24).Interior.Color = n
n = n + 1000

Changer beaucoup plus la valeur de n change la couleur assez significativement pour moi =).
Merci encore.
Résolut.
 

Vich

XLDnaute Nouveau
Re : Colorer des lignes suivant les lignes vides présentent.

Wow, c'est très compliqué tout ça :p

Merci DoubleZero je vais tenter de l'intégrer à ma macro. Du coup toi, tu conseillerais quelle solution sachant que je définis les couleurs de mes lignes avec le colorindex.
 

Vich

XLDnaute Nouveau
Re : Colorer des lignes suivant les lignes vides présentent.

J'ai essayé différentes solutions et rien n'y fias voici le code :

Code:
    'Application de couleur / ref connecteur
    'Tableau avec les différentes valeur des couleurs index pour colorer les lignes
    Dim n As Variant
    Dim i As Long
    Application.ScreenUpdating = False
    n = 2
    For i = 2 To Range("A65536").End(xlUp).Row
        If Range("A" & i).Value <> "" Then
            Range("A" & i).CurrentRegion.Resize(, 19).Interior.ColorIndex = n
            n = n + 1
            If n = 42 Or n = 56 Or n = 18 Or n = 53 Or n = 1 Or n = 5 Or n = 9 Or n = 11 _
                Or n = 13 Or n = 14 Or n = 21 Or n = 23 Or n = 25 Or n = 29 Or n = 30 Or n = 32 _
                Or n = 49 Or n = 51 Or n = 52 Or n = 53 Or n = 54 Or n = 55 Or n = 56 Then
                Range("A" & i).CurrentRegion.Resize(, 19).Font.ColorIndex = 2
            End If
        End If
    Next
    Rows(1).Interior.ColorIndex = xlNone
    Application.ScreenUpdating = False

Il me fais n'importe quoi avec ça comme il me prend A1 et le met le texte en blanc alors que A1 ne peux, en théorie, jamais être sélectionné vu que n commence à 2 ...

Pour éviter le problème (car j'arrive vraiment pas à régler ça) j'avais penser à faire un tableau avec les différente valeurs en RGB ou colorindex qui sont lisibles avec le font color en noir.

Encore une combine pour éviter le problème mais j'aimerais bien passer à autre chose, des idées ?
 
Dernière édition:

Vich

XLDnaute Nouveau
Re : Colorer des lignes suivant les lignes vides présentent.

Problème réglé avec cette méthode :

Code:
    Next
    For i = 1 To (NbCells * 2 + NbLigneSautee)
        If Cells(i, 1).Interior.ColorIndex = 3 Or Cells(i, 1).Interior.ColorIndex = 42 Or Cells(i, 1).Interior.ColorIndex = 56 Or Cells(i, 1) = 18 Or Cells(i, 1).Interior.ColorIndex = 53 Or Cells(i, 1).Interior.ColorIndex = 1 _
            Or Cells(i, 1).Interior.ColorIndex = 5 Or Cells(i, 1).Interior.ColorIndex = 9 Or Cells(i, 1).Interior.ColorIndex = 10 Or Cells(i, 1).Interior.ColorIndex = 11 Or Cells(i, 1).Interior.ColorIndex = 12 _
            Or Cells(i, 1).Interior.ColorIndex = 13 Or Cells(i, 1).Interior.ColorIndex = 14 Or Cells(i, 1).Interior.ColorIndex = 16 Or Cells(i, 1).Interior.ColorIndex = 18 Or Cells(i, 1).Interior.ColorIndex = 21 Or Cells(i, 1).Interior.ColorIndex = 23 _
            Or Cells(i, 1).Interior.ColorIndex = 25 Or Cells(i, 1).Interior.ColorIndex = 29 Or Cells(i, 1).Interior.ColorIndex = 30 Or Cells(i, 1).Interior.ColorIndex = 31 Or Cells(i, 1).Interior.ColorIndex = 32 _
            Or Cells(i, 1).Interior.ColorIndex = 47 Or Cells(i, 1).Interior.ColorIndex = 48 Or Cells(i, 1).Interior.ColorIndex = 49 Or Cells(i, 1).Interior.ColorIndex = 50 Or Cells(i, 1).Interior.ColorIndex = 51 Or Cells(i, 1).Interior.ColorIndex = 52 Or Cells(i, 1).Interior.ColorIndex = 53 _
            Or Cells(i, 1).Interior.ColorIndex = 54 Or Cells(i, 1).Interior.ColorIndex = 55 Or Cells(i, 1).Interior.ColorIndex = 56 Then
            Range("A" & i).CurrentRegion.Resize(, 24).Font.ColorIndex = 2
        End If
    Next i
 

Discussions similaires

Réponses
4
Affichages
410
Réponses
12
Affichages
459
Réponses
0
Affichages
307

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i