Listview color Item sous condition

creolia

XLDnaute Impliqué
Bonjour à tous

j'ai récupéré sur le forum cette macro qui me permet d'alimenté ma listview

Code:
With ListView1
With .ColumnHeaders
.Clear
 '.Add , , "      Source", 0, lvwColumnLeft '/// on met la largeur de colonne à 0
.Add , , "Type de Produit", 90
.Add , , "Description du Produit", 90
.Add , , "Date transaction", 80
.Add , , "Date de péremption", 80, 2
.Add , , "Entrée", 60, 2
.Add , , "Sortie", 60, 2
.Add , , "Service", 90, 2
.Add , , "Commentaire", 110, 2
.Add , , "Nb unitée/Boite", 60, 2
.Add , , "Nb Boite", 80, 2
.Add , , "Stock", 80, 2
.Add , , "Alerte Péremption", 80, 2

End With
.View = lvwReport
.FullRowSelect = True

End With
For Each sht In Sheets
  If Left(sht.Name, 3) = "BDD" Then
' Cherche la dernière ligne du tableau
DLig = sht.Range("B" & Rows.Count).End(xlUp).Row
Me.ListView1.ListItems.Add , , sht.Range("A" & DLig)
Ind = Me.ListView1.ListItems.Count
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("B" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("C" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("D" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("E" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("F" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("G" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("H" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("I" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("J" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("K" & DLig)
Me.ListView1.ListItems(Ind).ListSubItems.Add , , sht.Range("l" & DLig)
End If
Next sht

et j'utilisais cette macro pour colorier sous condition mes items de mon ancienne listview



Code:
NLL = Worksheets(Temp1.Caption).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
        For i = 3 To NLL
        'To Sheets(Temp1.Caption).Range("A65536").End(xlUp).Row
        
          .ListItems.Add , , Worksheets(Temp1.Caption).Cells(i, 2)
          .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 3)
          .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 4)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 5)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 6)
          .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 7)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 8)
            .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 9)
             .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 10)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets(Temp1.Caption).Cells(i, 11)
             
         end if 
next


le soucis avec cette nouvelle listview cette seconde macro ne fonctionne pas et je vois pas trop comment faire pour adapter cette macro à ma listview plus haut pour qu'il me colorie mes item sous condition quelqu'un pourais t'il m'aider svp merci d'avance
 

fhoest

XLDnaute Accro
Re : Listview color Item sous condition

Bonjour,
que veux tu dire par colorier les items
ton deuxième code n'est pas juste même pour remplir, ou alors il se glisse dans un code ou il y a with...
end with et if... end if.
poste ton fichier avec ta ou tes listview il sera plus simple de t'aider
A+
 

MJ13

XLDnaute Barbatruc
Re : Listview color Item sous condition

Bonjour Creolia, Fhoest

Creolia: Regarde ce code de Bob :):

Code:
Private Sub MiseEnForme()

Dim x As Long
With ListView1
    For x = 1 To .ListItems.count
        If .ListItems(x) = UCase("P") Then
            .ListItems(x).ForeColor = &HFF0000
               For J = 1 To 9
                  .ListItems(x).ListSubItems(J).ForeColor = &HFF0000
               Next
        Else
            .ListItems(x).ForeColor = &H0&
               For J = 1 To 9
                  .ListItems(x).ListSubItems(J).ForeColor = &H0&
               Next
        End If
    Next
End With

End Sub
 

fhoest

XLDnaute Accro
Re : Listview color Item sous condition

bonjour MJ13,
j'ai pris l'habitude maintenant pour utiliser les couleurs et pour une compréhensibilité du code plus simple de mettre les fonctions de couleur tel:
vbred,vbgreen,vbyellow etc...
je trouve cette facon plus claire dans la lecture du code,
j'avais le code de couleur de listview mais je ne comprenais pas bien la demande
A+ et au plaisir..
Fred.
 

MJ13

XLDnaute Barbatruc
Re : Listview color Item sous condition

Re

Fhoest: Moi, j'ai pris l'habitude de mettre les couleurs en RGB pour éviter les problèmes du pasage entre Xl2003 et XL2007, mais je vais creuser ton idée, car cette semaine est une semaine couleur pour moi (enfin cela devait l'être :))
 

fhoest

XLDnaute Accro
Re : Listview color Item sous condition

@ MJ13,
il est vrai que j'utilisai moi aussi auparavent le RGB(...,....,...),mais je trouve la gestion des trois code un peu complexe pour les trois couleurs qui ne sont pas franche,comme le rouge ok rgb(555,0,0) ou vert rgb(0,555,0),et encore bleu rgb(0,0,555),mais pour le reste ayie ayie ayie!!! les combinaisons...
A+
 

creolia

XLDnaute Impliqué
Re : Listview color Item sous condition

bonsoir à tous et un grand merci pour répondre au question quand je dit colorier je pense à changer la couleur de mes item et oui ma deuxième macro semble pas bonne car j'ai pas mis la partis pour remplir ma listview mais unique ment la partis couleur sous condition d'une ancienne listview mon but etait adapter cette possibilité a cette nouvelle listview macro 1 mais les deux ensemble ne veut rien dire c'est plus que sur lol

je vais tester dés demain vos propositions et je vous tiens au jus merci à tous et bonne soirée.
 

creolia

XLDnaute Impliqué
Re : Listview color Item sous condition

Re bonsoir à tous comme promis me revoila donc j'ai tester enfin j'ai essayer mais cela ne fonctionne pas il y à pas d'erreur mais les couleurs passe au noir uniquement

je rapelle se que je souhaitais

ma listviews recherche CHAQUE derniere ligne de mes feuilles dont le nom commence par BDD sa ya pas de soucis.

ensuite je voudrais différencier les entrées et les sorties respectueusement les colonne E et F à partir de la ligne 3.

pour cela j'ai choisie 2 couleur rouge quand sa sort et vert quand sa rentre.

donc un code du genre

Si la derniere ligne de la colonne E est Supérieure à 0 = couleur verte
Si la derniere ligne de la colonne F st Supérieure à 0 = couleur rouge

pour comprendre un peut mieu j'ai fais une PJ avec le chargement de la listview et la solution de MJ13

je vous remerci d'avance de votre aide .
 

Pièces jointes

  • Classeur1.zip
    19.9 KB · Affichages: 217
  • Classeur1.zip
    19.9 KB · Affichages: 171
  • Classeur1.zip
    19.9 KB · Affichages: 190

fhoest

XLDnaute Accro
Re : Listview color Item sous condition

Bonjour,
voici le code a remplacer:
Code:
Private Sub MiseEnForme()
Dim x As Long
With ListView1
    For x = 1 To .ListItems.Count
        If .ListItems(x).ListSubItems(4) > 0 Then .ListItems(x).ListSubItems(4).ForeColor = vbRed
        If .ListItems(x).ListSubItems(5) > 0 Then .ListItems(x).ListSubItems(5).ForeColor = vbGreen
    Next
End With
End Sub
A+
 

creolia

XLDnaute Impliqué
Re : Listview color Item sous condition

Re désoler j'ai oublier le fichier le voici.

Donc comme je disais un peut plus haut quand j'ai une valeur en G <1 je souhaite qu'il soit en rouge mais le probleme certaine cellule sont vide et j'ai bien peur qu'il me concidere sa comme un 0 alors que zero pour moi signifie que la péremption est à 0 et cellule vide qu'il y a pas de date de péremption donc n'est pas soumis à la condition des couleurs.

je donne egalement mon code macro



Code:
Private Sub UserForm_Initialize()
Dim Ind As Long, DLig As Long, sht As Worksheet
  With ListView1
    With .ColumnHeaders
      .Clear
      '.Add , , "      Source", 0, lvwColumnLeft '/// on met la largeur de colonne à 0
      .Add , , "Type de Produit", 90
      .Add , , "Description du Produit", 90
      .Add , , "Date transaction", 80
      .Add , , "Date de péremption", 80, 2
      .Add , , "Entrée", 60, 2
      .Add , , "Sortie", 60, 2
      .Add , , "Péremption", 90, 2
    End With
    .View = lvwReport
    .FullRowSelect = True
  End With
  
  For Each sht In Sheets
    If Left(sht.Name, 3) = "BDD" Then
      ' Cherche la dernière ligne du tableau
      DLig = sht.Range("B" & Rows.Count).End(xlUp).Row
      With Me.ListView1
        Me.ListView1.ListItems.Add , , sht.Range("A" & DLig)
        Ind = Me.ListView1.ListItems.Count
        .ListItems(Ind).ListSubItems.Add , , sht.Range("B" & DLig)
        .ListItems(Ind).ListSubItems.Add , , sht.Range("C" & DLig)
        .ListItems(Ind).ListSubItems.Add , , sht.Range("D" & DLig)
        .ListItems(Ind).ListSubItems.Add , , sht.Range("E" & DLig)
        .ListItems(Ind).ListSubItems.Add , , sht.Range("F" & DLig)
         .ListItems(Ind).ListSubItems.Add , , sht.Range("G" & DLig)
        
        If sht.Range("G" & DLig) < 1 Then
            .ListItems(Ind).ListSubItems(5).ForeColor = &HFF&
        End If
      
      End With
    End If
  Next sht

merci d'avance
 

Pièces jointes

  • Listview color V001.zip
    21.4 KB · Affichages: 169
  • Listview color V001.zip
    21.4 KB · Affichages: 164
  • Listview color V001.zip
    21.4 KB · Affichages: 187

Discussions similaires

Statistiques des forums

Discussions
314 486
Messages
2 110 107
Membres
110 666
dernier inscrit
Yaya123