1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| Option Explicit
Private Sub UserForm_Initialize()
' c'est un tableau dans lequel on va charger la plage de données de excel
' ce qui est plus rapide pour ensuite transférer les données au listview
Dim Tablo
' permettra de définir qu'une ligne est un séparateur
Dim Separateur As Boolean
Dim i As Integer
Dim j As Integer
' on charge la plage dans le tableau
' les colonne A à F, en partant de la ligne 2 et jusque la dernière ligne de la colonne B
Tablo = Worksheets("Feuil1").Range("A2", "F" & Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row)
' maintenant, tablo représente la plage
' par exemple : Tablo(1,1) = A2
' Tablo(1,7) = G2
' Tablo(15,6) = F16
' Etc...
'----- remplissage ListView------------------------
With ListView1
.AllowColumnReorder = True 'autorise l'agrandissement des colonnes
.View = lvwReport 'affichage en mode Rapport
.Gridlines = True 'affichage d'un quadrillage
.FullRowSelect = False ' interdit la sélection des lignes complètes
With .ColumnHeaders
'Supprime les anciens en-tetes
.Clear
'les en-tetes non fixes
.Add , , Worksheets("Feuil1").Cells(1, 1), 80 'désignation
.Add , , Worksheets("Feuil1").Cells(1, 2), 80 'Type
.Add , , Worksheets("Feuil1").Cells(1, 3), 80 'Visite
.Add , , Worksheets("Feuil1").Cells(1, 4), 80 'Pdate
.Add , , Worksheets("Feuil1").Cells(1, 5), 80 'Periodicite
.Add , , Worksheets("Feuil1").Cells(1, 6), 80 'Pvisite
End With
' pour chaque ligne
For i = LBound(Tablo, 1) To UBound(Tablo, 1)
' valeur de la première colonne
.ListItems.Add , , Tablo(i, 1)
' valeur des autres colonnes
With .ListItems(i).ListSubItems
.Add , , Tablo(i, 2)
.Add , , Format(Tablo(i, 3), "dd/mm/yy")
.Add , , Format(Tablo(i, 4), "dd/mm/yy")
.Add , , Tablo(i, 5)
.Add , , Tablo(i, 6)
End With
' pour les colonnes C et D
For j = 3 To 4
' si la valeur est une date
If IsDate(Tablo(i, j)) Then
'on colorie la cellule du listeview, de la même couleur que le cellule d'Excel
.ListItems(i).ListSubItems(j - 1).ForeColor = Worksheets("Feuil1").Cells(i + 1, j).Font.Color
End If
Next j
' si la première colonne est vide
If .ListItems(i) = "" Then
' on part du principe que tout est vide
Separateur = True
' on boucle sur les autres colonnes
For j = LBound(Tablo, 2) + 1 To UBound(Tablo, 2)
' si une colonne est remplie
If Tablo(i, j) <> "" Then
' la ligne n'est donc pas un séparateur
Separateur = False
Exit For
End If
Next j
' si la ligne est un séparateur
' on effectue une séparation en utilisant des UnderScore
If Separateur = True Then
.ListItems(i).Text = "______________"
With .ListItems(i)
For j = LBound(Tablo, 2) To UBound(Tablo, 2) - 1
.ListSubItems(j).Text = "_______________"
Next j
End With
End If
End If
Next i
End With
End Sub |
Partager