Probleme de macro Couleur listview sous condition

creolia

XLDnaute Impliqué
Bonjour à tous et bon dimanche

Je viens vers vous car j'ai un soucis j'utilise une listview qui doit se colorier sous condition suivant ajout suppr ou modif

le probleme c'est qu'il me colorie uniquement la derniere ligne de la listview et pas les autres j'ai dut louper une boucle quelque part mais je vois pas ou pouvez vous m'aider svp merci
Code:
Private Sub UserForm_Initialize()
With L1
        With .ColumnHeaders
        
            .Clear
             .Add , , "Nom", 60
             .Add , , "Prenom", 60
              .Add , , "Action", 60
            
            
        End With
        .View = lvwReport
        .FullRowSelect = False

.Gridlines = True
Dim i As Long


    
        For i = 2 To Feuil1.Range("A65536").End(xlUp).Row
     
           .ListItems.Add , , Feuil1.Cells(i, 1)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil1.Cells(i, 2)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil1.Cells(i, 3)
           
        
           
           
      
        Next i
        


On Error Resume Next
                'Dim it As Long
                Dim jr
                For it = 1 To 2
                jr = L1.ListItems(.ListItems.Count).ListSubItems(2).Text
                
                
                If jr = "" Then
                .ListItems(.ListItems.Count).ListSubItems(2).ForeColor = &H8000000E
                .ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor     'orange
                .ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor
                
            
ElseIf jr = "Ajout" Then
                .ListItems(.ListItems.Count).ListSubItems(4).ForeColor = &HFF0000
                .ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(4).ForeColor     'rose
                .ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(4).ForeColor
        
                
                ElseIf jr = "AV Supresion" Then
                .ListItems(.ListItems.Count).ListSubItems(2).ForeColor = &HC0C0FF
                .ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor     'rouge
                .ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor
 
 ElseIf jr = "Supp" Then
                .ListItems(.ListItems.Count).ListSubItems(2).ForeColor = &HFF&
                .ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor     'orange
                .ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor
ElseIf jr = "Modif" Then
                .ListItems(.ListItems.Count).ListSubItems(2).ForeColor = &H80C0FF
                .ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor     'orange
                .ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor
End If
                
Next it

             
        
1   End With
End Sub

à trés bientot
 

Pièces jointes

  • Classeur1.xls
    42 KB · Affichages: 84
  • Classeur1.xls
    42 KB · Affichages: 80
  • Classeur1.xls
    42 KB · Affichages: 89

jp14

XLDnaute Barbatruc
Re : Probleme de macro Couleur listview sous condition

Bonjour

Si on désire changer la couleur de certaines lignes il faut faire une boucle sur les lignes de listview.
Ci dessous le code avec une simplification.

Code:
Dim i As Integer, j As Integer
With L1
    'Boucle sur toutes les lignes
 For Nulist = 1 To .ListItems.Count
    jr = .ListItems(Nulist).ListSubItems(2).Text
    If jr = "" Then
        MiseEnForme L1, "&H8000000E", Nulist
    ElseIf jr = "Ajout" Then
        MiseEnForme L1, "&HFF0000", Nulist
    ElseIf jr = "AV Supresion" Then
        MiseEnForme L1, "&HC0C0FF", Nulist
    ElseIf jr = "Supp" Then
        MiseEnForme L1, "&HFF&F", Nulist
    ElseIf jr = "Modif" Then
        MiseEnForme L1, "&H80C0FF", Nulist
    End If
Next Nulist

End With
On Error GoTo 0
End Sub



Private Sub MiseEnForme(Listv As MSForms.Control, £couleur As String, Nulist As Long)


With Listv
    .ListItems(Nulist).ListSubItems(2).ForeColor = £couleur
    '.ListItems(.ListItems.Count).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor     'orange
    '.ListItems(.ListItems.Count).ListSubItems(it).ForeColor = L1.ListItems(.ListItems.Count).ListSubItems(2).ForeColor
End With
End Sub

JP
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87