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

Rechercher des sujets similaires à "mise forme listview"