Ligne en couleur dans listeview

  • Initiateur de la discussion Initiateur de la discussion matrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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: 56
  • test.zip
    test.zip
    44.2 KB · Affichages: 36
  • test.zip
    test.zip
    44.2 KB · Affichages: 36
  • test.zip
    test.zip
    44.2 KB · Affichages: 33
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. 😕

A te lire.
 

Pièces jointes

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: 58
  • image2.jpg
    image2.jpg
    21.7 KB · Affichages: 54
  • image2.jpg
    image2.jpg
    21.7 KB · Affichages: 62
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...😀
 
Dernière édition:
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.
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 couleur et ligne
Réponses
6
Affichages
293
Réponses
3
Affichages
169
Réponses
18
Affichages
727
Réponses
2
Affichages
469
  • Question Question
Réponses
11
Affichages
427
Retour