Mise en forme listview
Bonjour à tous
c'est la première foi que j'utilise la listview. Donc je ne maitrise qu'un petit peu.
Je souhaiterai mettre en rouge en en caractère gras les index colonne 4 et 5 sous condition
j'ai une erreur d'exécution 35600 qui me dit " Index out of bounds" dans le cas ou je mets en forme un sous éléments.
.ListItems(i).ListSubItems(4).ForeColor = vbRed
Erreur que je n'ai pas si je mets en forme uniquement .listitems(i)
Merci de vos conseils
Voici mon code.
Private Sub commandbutton1_Click()
'---- Déclarationd des var
Dim derligne As Integer, nbligne1 As Long, nbligne2 As Long, nbLigne3 As Long, L As Long
Dim TECH As String, STATUT As String
Dim WF As Worksheet
Dim RG As Range
Dim X As Integer, i As Long, j As Long, z As Integer, ligne As Integer, colonne As Integer
Dim NMVT As Variant
'---- Initialisation des variables
TECH = ComboBox1.Text
nbligne1 = Feuil2.UsedRange.Rows.Count
nbligne2 = Feuil3.UsedRange.Rows.Count
nbLigne3 = Feuil8.UsedRange.Rows.Count
Set WF = ThisWorkbook.Sheets("histo list")
Set RG = WF.Range("A1")
ligne = 2
'---- RAZ List
ListView1.ListItems.Clear
'---- RAZ feuil histo list
L = 1 ' ligne de titre
For i = nbLigne3 To L + 1 Step -1
Feuil8.Rows(i).Delete
Next i
Application.Wait Now + TimeValue("0:00:01")
'---- RANGE feuil 3 par ordre NMVT Décroissant
Feuil3.Range("A2:N" & nbligne2 - 1).Sort Key1:=Feuil3.Range("B2"), Order1:=xlDescending
'---- création feuil histo list
For X = nbligne2 To 1 Step -1 '---- cherche mvt prod sur feuil3
NMVT = Feuil3.Cells(X, 2)
For i = nbligne1 To 1 Step -1
If Feuil2.Cells(i, 1) = NMVT Then
If TECH = Feuil2.Cells(i, 2) Or TECH = "TOUS" Then
Feuil8.Cells(ligne, 1) = Feuil2.Cells(i, 3) 'Date
Feuil8.Cells(ligne, 2) = Feuil2.Cells(i, 4) ' client
Feuil8.Cells(ligne, 3) = Feuil2.Cells(i, 5) ' BI
Feuil8.Cells(ligne, 4) = Feuil3.Cells(X, 3) ' ref
Feuil8.Cells(ligne, 5) = Feuil3.Cells(X, 4) ' ref sn
Feuil8.Cells(ligne, 6) = Feuil3.Cells(X, 5) ' provenance
Feuil8.Cells(ligne, 7) = Feuil3.Cells(X, 6) ' N° BL
Feuil8.Cells(ligne, 8) = Feuil3.Cells(X, 7) ' desig
Feuil8.Cells(ligne, 9) = Feuil3.Cells(X, 8) 'Qt
'---- les statuts
If Feuil3.Cells(X, 10) = 0 Then STATUT = "A commander"
If Feuil3.Cells(X, 10) = 1 Then STATUT = "Commande à Editer"
If Feuil3.Cells(X, 10) = 2 Then STATUT = "En attente de Livraison"
If Feuil3.Cells(X, 10) < 2 Then STATUT = "Réceptionné"
Feuil8.Cells(ligne, 10) = STATUT
'---- Vérif
Feuil8.Cells(ligne, 11) = Feuil3.Cells(X, 14)
ligne = ligne + 1
End If
End If
Next i
Next X
'---- LA LISTVIEW
'---- Quadrillage de la liste dans propriété ListView1.Gridlines = True
'---- Spécifie l'affichage en mode "Détails" dans propriété ListView1.View = lvwReport
'---- Initialisation variables
nbLigne3 = Feuil8.UsedRange.Rows.Count
colonne = 11
'---- Construction de la listeview
With ListView1
'---- Effacer les anciennes colonnes
With .ColumnHeaders
.Clear
End With
'---- création des colonnes des entêtes
For i = 1 To colonne
.ColumnHeaders.Add , , RG.Offset(0, i - 1)
Next i
'---- largeur des colonnes
.ColumnHeaders(1).Width = 50
.ColumnHeaders(2).Width = 100
.ColumnHeaders(3).Width = 40
.ColumnHeaders(4).Width = 50
.ColumnHeaders(5).Width = 100
.ColumnHeaders(6).Width = 60
.ColumnHeaders(7).Width = 50
.ColumnHeaders(8).Width = 140
.ColumnHeaders(9).Width = 30
.ColumnHeaders(10).Width = 100
.ColumnHeaders(11).Width = 30
'---- Création des lignes en colonne1
For i = 1 To nbLigne3
.ListItems.Add , , RG.Offset(i, 0)
Next i
'---- Création colonnes par ligne -1 la première colonne est déja crée
For i = 1 To nbLigne3
For j = 1 To colonne - 1
.ListItems(i).ListSubItems.Add , , RG.Offset(i, j)
If RG.Offset(i, 10) = True Then
.ListItems(i).ForeColor = vbRed
.ListItems(i).ListSubItems(4).ForeColor = vbRed
'.ListItems(i).Bold = True
End If
Next j
Next i
End With
End Sub
Re bonjour
j'ai trouvé une solution avec le code suivant
For i = 1 To nbLigne3 - 1
For j = 1 To colonne - 1
If .ListItems(i).ListSubItems(10) = True Then ListView1.ListItems(i).ListSubItems(j).ForeColor = vbRed
If .ListItems(i).ListSubItems(10) = True Then ListView1.ListItems(i).ListSubItems(j).Bold = True
Next j
Next i