Ligne en couleur dans listeview

matrix

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin de votre aide sur ce code.

Je voudrais que dans mon listeview, si dans la colonne "FIX" , il n'y a pas de "X", et que si dans la colonne "DATE", il y a plus de 24 heures, que la ligne complète devient en jaune.

Si toujours, dans la colonne "FIX" , il n'y a pas de "X", et que dans la colonne "DATE", il y a plus de 48 heures, la ligne complète devient en rouge.

Comment faire s.v.p?

Merci pour votre aide.
 

Pièces jointes

  • ligne en couleur.jpg
    ligne en couleur.jpg
    22.7 KB · Affichages: 48
  • test.zip
    44.2 KB · Affichages: 36
  • test.zip
    44.2 KB · Affichages: 36
  • test.zip
    44.2 KB · Affichages: 33

13GIBE59

XLDnaute Accro
Re : Ligne en couleur dans listeview

Salut Matrix. :)

Un début de demi réponse qui joue sur la couleur de police de la ligne, et non pas sur la couleur de la ligne en elle même.

Inspire t'en en changeant le RGB (pris au hasard !) et en ajoutant dans le IF ton autre condition relative aux 24 heures, que je n'ai pas comprise. :confused:

A te lire.
 

Pièces jointes

  • test.zip
    25 KB · Affichages: 41
  • test.zip
    25 KB · Affichages: 44
  • test.zip
    25 KB · Affichages: 42

matrix

XLDnaute Occasionnel
Re : Ligne en couleur dans listeview

Merci pour ton aide.

Il y a un léger problème.

J'ai modifié le code:
Code:
For s = 1 To 1000
            Lgn = 1
            For Each cell In Selection
                If cell.Offset(0, 9).Value <> "X" And cell.Offset(0, 3).Value <= Date + 1 Then

                    Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(255, 0, 0)

                    Lgn = Lgn + 1
             
                End If
                
                If cell.Offset(0, 9).Value <> "X" And cell.Offset(0, 3).Value < Date + 2 Then

                    Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(0, 0, 255)

                    Lgn = Lgn + 1
                    
                       End If
                       
                       If cell.Offset(0, 9).Value = "X" Then
                       Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(0, 0, 33)
                       
                    Lgn = Lgn + 1
                    
                    End If
            Next cell
            Next s
End With

Sauf voir l'image joint pour le résultat. Même s'il y a un X, il le met en couleur aussi.
 

Pièces jointes

  • image2.jpg
    image2.jpg
    21.7 KB · Affichages: 49
  • image2.jpg
    image2.jpg
    21.7 KB · Affichages: 46
  • image2.jpg
    image2.jpg
    21.7 KB · Affichages: 53

13GIBE59

XLDnaute Accro
Re : Ligne en couleur dans listeview

Ton problème me paraît normal :
Même s'il y a un X, il le met en couleur aussi.

est dû à :
If cell.Offset(0, 9).Value = "X" Then
Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(0, 0, 33)

peut-être faut-il écrire :

Code:
If cell.Offset(0, 9).Value <> "X"
mais j'ai réellement un doute, car je ne comprends toujours pas tes conditions "horaires".

Edit : For s = 1 To 1000, tu y vas fort, tu as 12 colonnes...:D
 
Dernière édition:

matrix

XLDnaute Occasionnel
Re : Ligne en couleur dans listeview

Désolé, toujour avec un problème.

J'ai changé pour le nouveau code:
Code:
If cell.Offset(0, 9).Value <> "X"

Maintenant, Une ligne est en bleu, l'autre en rouge et l'autre en noir, reviens au bleu, ensuite rouge et encore noir......

Je comprend vraiment pas.

Voic le code complet:
Code:
For s = 1 To 10
           Lgn = 1
            For Each cell In Selection
                If cell.Offset(0, 9).Value <> "X" And cell.Offset(0, 3).Value <= Date + 1 Then

                    Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(255, 0, 0)

                    Lgn = Lgn + 1
             
                End If
                
                If cell.Offset(0, 9).Value <> "X" And cell.Offset(0, 3).Value < Date + 2 Then

                    Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(0, 0, 255)

                    Lgn = Lgn + 1
                    
                       End If
                       
                       If cell.Offset(0, 9).Value <> "X" Then
                       Me.ListView1.ListItems(Lgn).ListSubItems(s).ForeColor = RGB(0, 0, 33)
                       
                    Lgn = Lgn + 1
                    
                    End If
            Next cell
            Next s
End With


Merci encore pour votre aide.
 

13GIBE59

XLDnaute Accro
Re : Ligne en couleur dans listeview

Je te joins un fichier à demi fait. Je m'explique : dans ton code, il faut placer les Lgn = Lgn + 1 après End If.
Code:
 End If
 Lgn = Lgn + 1

ca marche pour les lignes <> "X".

J'ai mis en rem les lignes concernant ta condition 'Date', que je n'ai toujours pas comprise. J'aimerais bien que tu m'expliques, d'ailleurs, si tu veux que ton fichier avance...
 

Pièces jointes

  • test.zip
    25.6 KB · Affichages: 37
  • test.zip
    25.6 KB · Affichages: 37
  • test.zip
    25.6 KB · Affichages: 33

Bebere

XLDnaute Barbatruc
Re : Ligne en couleur dans listeview

bonjour Matrix,Gibe
font rouge si pas de croix,jaune si croix existe
pour la date comprend pas

Sub IniListview()
On Error Resume Next
Dim i As Long
Sheets("BD").AutoFilterMode = False
With ListView1
.ListItems.Clear
With .ColumnHeaders
.Clear
.Add , , "N°", 20
.Add , , "Fournisseur", 60
.Add , , "# d'inspection", 75
.Add , , "date", 85
.Add , , "Véhicule", 50
.Add , , "'Type de véhicule", 75
.Add , , "'Type de réparation", 90
.Add , , "Bon de réparation", 50
.Add , , "Date réparation", 85
.Add , , "FIX", 40
'.Add , , "Lieu", 100
'.Add , , "Commentaire", 200
'.Add , , , 0
End With
.View = lvwReport
.FullRowSelect = True
.Gridlines = True
For i = 2 To Sheets("BD").Range("A65536").End(xlUp).Row
.ListItems.Add , , Sheets("BD").Cells(i, 1)
For j = 2 To 12
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BD").Cells(i, j)
Next
.ListItems(.ListItems.Count).ListSubItems.Add , , i
Next

For lgn = 1 To .ListItems.Count
If .ListItems(lgn).ListSubItems(9) = "" Then
.ListItems(lgn).ForeColor = RGB(255, 0, 0)
For j = 1 To 11
.ListItems(lgn).ListSubItems(j).ForeColor = RGB(255, 0, 0)
Next j

Else
.ListItems(lgn).ForeColor = RGB(255, 255, 0)
For j = 1 To 11
.ListItems(lgn).ListSubItems(j).ForeColor = RGB(255, 255, 0)
Next j
End If

Next lgn
End With
ListView1.ListItems(1).Selected = False
Set ListView1.SelectedItem = Nothing

End Sub
à bientôt
 

Lii

XLDnaute Impliqué
Re : Ligne en couleur dans listeview

Bon jour,

si j'ai compris le problème des dates ... avec une mise à jour en cas de changement de la date choisie.
Ce serait plus facile d'analyser le code si tu commençais par le nettoyer !
 

Pièces jointes

  • ListView-LigneCoulSi.zip
    21.9 KB · Affichages: 48

Discussions similaires

Réponses
10
Affichages
259

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson