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
|
Public Sub RemplirComboAlpha(cboCombobox As MSForms.ComboBox, strFeuille As String, strColDepart As String, lngRowDepart As Long)
' ***** cette procédure va remplir n'importe qu'elle combobox en récupérant les données
' ***** d'une colonne, en enlevant les doublons et en faisant un tri *****
Application.Cursor = xlWait
' ***** déclaration des variables *****
Call Liaison
Set wks = BaseDorsal.Worksheets(strFeuille)
Dim i As Long
Dim lngIncrementTab As Long
lngIncrementTab = 1
Dim tabTri As Variant
ReDim tabTri(1 To 1)
cboCombobox.Clear
' ***** lancement de la procédure pour mettre les données dans une tableau *****
wks.Range("" & strColDepart & lngRowDepart & "", wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown)).AdvancedFilter Action:=xlFilterInPlace, _
criteriarange:=wks.Range("" & strColDepart & lngRowDepart & "", wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown)), unique:=True
For i = lngRowDepart To CLng(wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown).Row)
If wks.Range("" & strColDepart & i & "").EntireRow.Hidden = False Then
tabTri(i - 1) = wks.Range("" & strColDepart & i & "").Value
End If
' redimensionnement du tableau
lngIncrementTab = lngIncrementTab + 1
ReDim Preserve tabTri(1 To lngIncrementTab)
Next i
Set wks = Nothing
' ***** tri de la liste dans l'ordre alphabétique *****
Dim j As Long
Dim temp
For i = LBound(tabTri) To UBound(tabTri) - 1
For j = i + 1 To UBound(tabTri)
If tabTri(i) > tabTri(j) Then
temp = tabTri(i)
tabTri(i) = tabTri(j)
tabTri(j) = temp
End If
Next j
Next i
' ***** remplissage de la liste *****
cboCombobox.AddItem "(TOUS)"
For i = LBound(tabTri) To UBound(tabTri) - 1
If tabTri(i) = "" Or IsNull(tabTri(i)) Then
Else
cboCombobox.AddItem tabTri(i)
End If
Next i
cboCombobox.Value = "(TOUS)"
Application.Cursor = xlDefault
End Sub |
Partager