Option Explicit
Private Sub Annuler_Click() 'Bouton Annuler
Unload UserForm2
End Sub
Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)
End Sub
Private Sub TextBox1_Change()
Call LVW_Fill(Trim$(TextBox1.Text), ComboBox1.ListIndex)
End Sub
Private Sub UserForm_Activate()
Me.Caption = "Historique des enregistrements"
Call CBO_Fill
Call LVW_Fill("", 0)
End Sub
Private Sub CBO_Fill()
'Variables locales
Dim iCnt As Integer
Dim oRng As Excel.Range
'Remplit la Combo
Set oRng = Feuil1.Cells(1, 1)
For iCnt = 0 To 13 '-- 14 colonnes
ComboBox1.AddItem oRng.Offset(0, iCnt)
Next iCnt
ComboBox1.ListIndex = 0
End Sub
Private Sub LVW_Fill(ByVal sFilter As String, ByVal iCol As Integer)
'Variables locales
Dim iCnt As Integer
Dim iRnd As Integer
Dim oRng As Excel.Range
Dim oItem As ListItem
'Initialisation de la ListView
ListView1.ColumnHeaders.Clear
ListView1.FullRowSelect = True
ListView1.ListItems.Clear
ListView1.View = lvwReport
ListView1.MultiSelect = True
'Remplissage de la ListView
Set oRng = Feuil1.Cells(1, 1)
Do Until oRng.Value = ""
'-- En-têtes
If oRng.Row = 1 Then
For iCnt = 0 To 14 '-- 14 colonnes
ListView1.ColumnHeaders.Add , , oRng.Offset(0, iCnt)
Next iCnt
'-- Données
Else
iRnd = Int((4 * Rnd) + 1)
If LCase$(Left$(oRng.Offset(0, iCol), Len(sFilter))) = LCase$(sFilter) Then
Set oItem = ListView1.ListItems.Add(, "K" & oRng.Row, oRng.Offset(0, 0))
For iCnt = 1 To 14 '-- 14 colonnes
oItem.ListSubItems.Add , , oRng.Offset(0, iCnt)
Next iCnt
End If
End If
Set oRng = oRng.Offset(1, 0)
Loop
End Sub
Private Sub CommandButton1_Click()
Dim j As Integer, i As Integer
Dim iDate As Date, Nom As String, Prenom As String, Badge As Variant, CodeService As Integer, OBM As Integer, Sodexo As String, Etat As String, Debut As Date, Fin As Date
With ListView1
ReDim valeur(.ColumnHeaders.Count)
For i = 1 To .ListItems.Count
If .ListItems(i).Selected = True Then
valeur(0) = .ListItems(i).Text
For j = 1 To .ColumnHeaders.Count - 1
valeur(j) = .ListItems(i).ListSubItems(j).Text
Next j
For j = LBound(valeur) To UBound(valeur)
'Pour vérifier qui est où utiliser le MsgBox suivant:
'(J'ai un bug obligé de cliquer 16 fois pour fermer le MsgBox)
'MsgBox .ListItems(i).ListSubItems.Item(IciLeNumeroDeLaColonne).Text
iDate = .ListItems(i).Text
Nom = .ListItems(i).ListSubItems.Item(1).Text
Prenom = .ListItems(i).ListSubItems.Item(2).Text
Badge = .ListItems(i).ListSubItems.Item(3).Text
CodeService = .ListItems(i).ListSubItems.Item(5).Text
OBM = .ListItems(i).ListSubItems.Item(6).Text
Sodexo = .ListItems(i).ListSubItems.Item(10).Text
Etat = .ListItems(i).ListSubItems.Item(11).Text
Debut = .ListItems(i).ListSubItems.Item(13).Text
Fin = .ListItems(i).ListSubItems.Item(14).Text
'Pour vérifier si tout est bon utiliser ce MsgBox avec le nom de la variable
'(Même bug qu'au dessus)
MsgBox Debut
Next j
End If
Next i
End With
End Sub