Probleme de macro Couleur listview sous condition

  • Initiateur de la discussion Initiateur de la discussion creolia
  • 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 !

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

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:
- 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

Réponses
4
Affichages
177
Réponses
9
Affichages
581
Réponses
4
Affichages
1 K
Retour