Ordonner des combobox déja remplie
Résolu
jubatail
Messages postés
39
Statut
Membre
-
jubatail Messages postés 39 Statut Membre -
jubatail Messages postés 39 Statut Membre -
Bonjour,
j'ai ce code ci-dessous qui fonctionne très bien et qui me permet d'initialiser les combobox.
Est ce que c'est possible de rajouter du code pour que la liste dans les comboboxs s'affiche dans un ordre croissant ? je voudrais ordonner la liste !!
voici le code :
merci
julie
j'ai ce code ci-dessous qui fonctionne très bien et qui me permet d'initialiser les combobox.
Est ce que c'est possible de rajouter du code pour que la liste dans les comboboxs s'affiche dans un ordre croissant ? je voudrais ordonner la liste !!
voici le code :
For inc = 1 To NbColonne 'première boucle pour traiter toutes les colonnes
Set combo = Me.Controls("Label" & inc) 'contrôle de l'objet label
combo.Caption = NomColonne(inc - 1) 'Noms des labels = Nom de la colonne
Set combo = Me.Controls("ComboBox_CAT_" & inc) 'contrôle de l'objet combobox
combo.Style = 0 'propriété style des comboboxs :(initialement =0) on peut écrire dans les comboboxs, la mettre (=2) après initialisation
DL = Sheets(NomFeuille).Cells.Find("*", , LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For i = 4 To DL 'Deuxième boucle pour traiter toutes les lignes d'une colonne
If Sheets(NomFeuille).Cells(i, inc + 3).Text <> "N/D" Then 'si la ligne contient "N/D" ne pas incorporé cette valeur
combo.Value = Sheets(NomFeuille).Cells(i, inc + 3).Text 'la valeur de la combobox est égale a la premiere cellule
'de la première colonne et de la première ligne
If combo.ListIndex = -1 Then combo.AddItem Sheets(NomFeuille).Cells(i, inc + 3).Text 'si 2 cellules sont similaires ne pas les inscrire 2 fois
End If
Next i
'Ordonner les combobox
combo.Value = "" 'on met les comboboxs à vide à l'ouverture de la fenêtre
combo.Style = 2 '(=2) on ne peut plus écrire dans les comboboxs, le client peut seulement sélectionner les valeurs proposées
Set combo = Nothing
Next
merci
julie
A voir également:
- Ordonner des combobox déja remplie
- Comment ordonner une liste sur excel - Guide
- Copiez l'image dans un logiciel d'édition d'images ou un outil en ligne comme js paint ou pixlr e. remplissez les cases en suivant le code couleur. des cases supplémentaires vont se remplir automatiquement. que représente le dessin ? - Forum Graphisme
- Combobox vba liste déroulante dynamique - Forum Excel
- Liste déroulant dynamique en cascade en VBA ✓ - Forum Excel
- Formulaire remplie - Guide
1 réponse
Bonjour,
code a mettre apres ordonner combo
'------------------------------------------------------
sub a ajouter
code a mettre apres ordonner combo
Dim t As Variant
t = Combo.List
Call TrierPlage(t)
Combo.List = t
'------------------------------------------------------
sub a ajouter
'
' Tri de Shell - Shell Sort adapté pour tri plage de cellules
'
Sub TrierPlage(plage As Variant, Optional ByVal loBound As Long = -1, Optional ByVal upBound As Long = -1)
Dim i As Long, j As Long, h As Long, v As Variant, t() As Variant
'mise en tableau de la plage de cellules
t = Application.Transpose(plage)
'debut de tableau
If loBound = -1 Then
loBound = LBound(t())
End If
'fin de tableau
If upBound = -1 Then
upBound = UBound(t())
End If
h = loBound
Do
h = 3 * h + 1
Loop Until h > upBound
Do
h = h / 3
For i = h + 1 To upBound
v = t(i): j = i
Do While t(j - h) > v
t(j) = t(j - h): j = j - h
If j <= h Then
Exit Do
End If
Loop
t(j) = v
Next i
Loop Until h = loBound
plage = Application.Transpose(t())
End Sub
Voici le code que j'ai utilisé mais le souci cest que j'ai du le copier coller 20 fois car j'ai 20 combobox !!!
For i = 0 To Me.ComboBox_CAT_1.ListCount - 1 For j = 0 To Me.ComboBox_CAT_1.ListCount - 1 If Val(ComboBox_CAT_1.List(i)) < Val(ComboBox_CAT_1.List(j)) Then strtemp = ComboBox_CAT_1.List(CInt(i)) ComboBox_CAT_1.List(i) = ComboBox_CAT_1.List(j) ComboBox_CAT_1.List(j) = strtemp End If Next j Next iEn effet il est plus court et le votre je comprends pas trop désolé ...
Peut être une iddée pour le réaliser directement dans toutes les comboboxs ?
copier coller 20 fois
Une seule fois suffit, remplacez ComboBox_CAT_1 par combo et mettez le code juste apres
'ordonner combobox
For j = 0 To combo.ListCount - 1 If Val(combo.List(i)) < Val(combo.List(j)) Then strtemp = combo.List(CInt(i)) combo.List(i) =combo.List(j) combo.List(j) = strtemp End If Next jle code que je vous ai mis est simple
Dim t As Variant t = Combo.List 'trsf de la liste combobox dans un tableau Call TrierPlage(t) 'appel de la sub de tri avec le tableau en parametre Combo.List = t 'trsf du tableau trie dans la combobox Sub TrierPlage() tri Shell rapide , vous trouverez les explications ici [https://fr.wikipedia.org/wiki/Tri_de_Shell]