Private Sub UserForm_Initialize()
Dim c As Range
Dim data As Collection
Dim i As Byte, j As Byte, k As Byte
Dim tablo()
Dim item
Dim plage As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("Listes") ' Feuil2 '"listes"
'initialisation combo groupement et code
ComboBox1.List = .Range("b2:b" & .Range("b65536").End(xlUp).Row).Value
ComboBox2.List = .Range("a2:a" & .Range("a65536").End(xlUp).Row).Value
End With
Range("a1").AutoFilter
Range("a1").AutoFilter
'initialisation combobox4 (DUA) et combobox 10 sans doublons et triée
With Feuil6
For k = 4 To 11
Select Case k
Case 4: Set plage = .Range("k2:k" & .Range("k65536").End(xlUp).Row)
Case 10: Set plage = .Range("n2:n" & .Range("n65536").End(xlUp).Row)
Case 11: Set plage = .Range("e2:e" & .Range("e65536").End(xlUp).Row)
Case Else: Set plage = Nothing
End Select
If Not plage Is Nothing Then
Set data = New Collection
For Each c In plage
If c <> "" Then
On Error Resume Next
data.Add c, CStr(c)
On Error GoTo 0
End If
Next c
For Each item In data
Controls("combobox" & k).AddItem item
Next item
With Controls("combobox" & k)
For i = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If k = 4 Then
If Val(.List(i)) < Val(.List(j)) Then
item = Val(.List(i))
.List(i) = .List(j)
.List(j) = item
End If
End If
If k > 9 Then
If .List(i) < .List(j) Then
item = .List(i)
.List(i) = .List(j)
.List(j) = item
End If
End If
Next j
Next i
End With
End If
Next k
End With
'initialise combobox6, 7 et 8 et 9 sans doublons et triée
For k = 6 To 9
'If k <> 9 Then
Set data = Nothing
Set data = New Collection
Select Case k
Case 6: Set plage = Feuil6.Range("p2:p" & Feuil6.Range("p65536").End(xlUp).Row)
Case 7: Set plage = Feuil6.Range("r2:r" & Feuil6.Range("r65536").End(xlUp).Row)
Case 8: Set plage = Feuil6.Range("j2:j" & Feuil6.Range("j65536").End(xlUp).Row)
Case 9: Set plage = Feuil6.Range("o2:o" & Feuil6.Range("o65536").End(xlUp).Row)
End Select
For Each c In plage
If c <> "" Then
On Error Resume Next
If k = 8 Then
data.Add c, CStr(c)
Else
data.Add Year(CDate(c)), CStr(Year(CDate(c)))
End If
On Error GoTo 0
End If
Next c
' *** Evite un BUG si aucune date dans les plages
If data.Count > 0 Then
' Redimensionne le tablo selon la quantité de data
ReDim tablo(1 To data.Count)
For i = 1 To data.Count
tablo(i) = data(i)
Next i
For i = 1 To UBound(tablo)
For j = 1 To UBound(tablo)
If Val(tablo(i)) < Val(tablo(j)) Then
item = Val(tablo(i))
tablo(i) = tablo(j)
tablo(j) = item
End If
Next j
Next i
For i = 1 To UBound(tablo)
Controls("combobox" & k).AddItem tablo(i)
Next i
End If
Erase tablo
' End If
Next k
'initialisation combobox5 (sort)
ComboBox5.List = Array("C", "D", "T")
'année précise pour dua et éliminé par défaut
OptionButton4 = True
OptionButton6 = True
OptionButton8 = True
'alimentation combobox ai
End Sub