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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| 'Affichage des sources et reports
Sub ListeSourceAndReport(ByVal MyChoice As String, MyP As String)
Dim AllRange As Range, AllCol As Range, MyKey
Dim I As Long, j As Long, MyRange As Range, MyDicoPeriodicity As New Dictionary
Dim rg As Range, n As Integer, rgStart As Range, k As Long
Dim TitleTab, MyTab() As String, MyRngListe As Range
Dim MyBasket(), MyItem As ListItem, MyColor As Long
'Dictionnaire des Periodes
With ThisWorkbook.Worksheets("Param")
For Each MyRange In .Range(.Range("Périodicité").Offset(1), .Range("Périodicité").End(xlDown))
If Not MyDicoPeriodicity.Exists(MyRange.Value) Then
MyDicoPeriodicity.Add MyRange.Value, MyRange.Offset(, 1).Value
End If
Next MyRange
End With
'la plage avec les noms à copier dans la LV
With ThisWorkbook.Worksheets("Param_" & MyChoice)
Set rg = .Range("Start_" & MyChoice)
Set MyRngListe = .Range(rg, rg.End(xlDown))
n = .Range(rg, rg.End(xlDown)).Count - 1
End With
'liste du panier actuel
With BOARD.OLEObjects("SelectionLV").Object
.Objects.ColumnHeaders.Clear
.View = lvwReport
'ajout des titres de colonnes
.ColumnHeaders.Add , , "Nom"
If .ListItems.Count > 0 Then
ReDim MyBasket(1 To .ListItems.Count)
For Each MyItem In .ListItems
I = I + 1
MyBasket(I) = MyItem
Next MyItem
End If
End With
With BOARD.OLEObjects("ListeLV").Object
.ColumnHeaders.Clear
.ListItems.Clear
.View = lvwReport
'ajout des titres de colonnes
TitleTab = Array("Nom", "Pér", "MAJ", "Status")
For I = 0 To UBound(TitleTab)
.ColumnHeaders.Add , , TitleTab(I)
Next I
'construire le tableau a remplir pour la LV
If MyChoice = "Sources" Then
For I = 0 To n
If rg.Offset(I, 3).Value = MyDicoPeriodicity(MyP) Or MyP = "Tous" Then
ReDim Preserve MyTab(3, k)
MyTab(0, k) = rg.Offset(I, 0).Value
MyTab(1, k) = rg.Offset(I, 3).Value
MyTab(2, k) = rg.Offset(I, 16).Value
MyTab(3, k) = Status(rg.Offset(I, 0).Value, MyChoice)
k = k + 1
End If
Next I
Else
For I = 0 To n
If rg.Offset(I, 1).Value = MyDicoPeriodicity(MyP) Or MyP = "Tous" Then
ReDim Preserve MyTab(3, k)
MyTab(0, k) = rg.Offset(I, 0).Value
MyTab(1, k) = rg.Offset(I, 1).Value
MyTab(2, k) = rg.Offset(I, 5).Value
MyTab(3, k) = Status(rg.Offset(I, 0).Value, MyChoice)
k = k + 1
End If
Next I
End If
If Not IsEmpty_V(MyTab) Then
'ajout des éléments de la 1re colonne
For I = 0 To UBound(MyTab, 2)
.ListItems.Add , TitleTab(0) & "__" & MyTab(0, I), MyTab(0, I)
'Code couleur selon dispo/constructibilité
If MyTab(3, I) = "KO" Then MyColor = RGB(255, 0, 0) Else MyColor = RGB(50, 205, 50)
.ListItems.Item(I + 1).ForeColor = MyColor
'ajout des éléments des autres colonnes
For j = 1 To UBound(MyTab)
.ListItems(I + 1).ListSubItems.Add , TitleTab(j) & "__" & MyTab(0, I), MyTab(j, I)
.ListItems(I + 1).ListSubItems.Item(j).ForeColor = MyColor
Next j
Next I
'deselectionner premiere ligne
.ListItems(1).Selected = False
End If
If .ListItems.Count > 0 Then
For I = 1 To .ListItems.Count
'on check si il est dans le panier
If Not IsEmpty_V(MyBasket) Then
If IsInTab(BOARD.OLEObjects("ListeLV").ListItems(I), MyBasket) Then BOARD.OLEObjects("ListeLV").ListItems(I).Checked = True
End If
Next I
End If
End With
'redimensionnement
TitleTab = Array(350, 40, 80, 60)
Call SetWidth(BOARD.OLEObjects("ListeLV").Object, TitleTab)
Call SetWidth(BOARD.OLEObjects("SelectionLV").Object, TitleTab)
End Sub |
Partager