Trie alpha pour combobox

apdf1

XLDnaute Impliqué
Bonjour,

J'ai un USF, comprenant TextBox et ComBobox je suis à la recherche d'un code pour trie dans la ComBobox

Un très grand merci à tout ceux qui pourront m'aider...

Ci joint le fichier exemple sera plus parlant
Cordialement
Max
 

Pièces jointes

  • Combobox trie.xls
    49.5 KB · Affichages: 53

Papou-net

XLDnaute Barbatruc
Re : Trie alpha pour combobox

Bonjour à Tous,

@ Jean Marcel : ton tri ne s'effectue que sur la colonne A, de ce fait les données des autres colonnes sont erronées.

Je joins une solution, moins technique, mais qui trie toutes les données que je recopie dans les colonnes AA à AI.Ces colonnes sont effacées à la fermeture du formulaire. Il serait bien sûr plus judicieux de trier directement les colonnes A à I, ce qui autoriserait la sélection directe dans la liste déroulante.

Je pense que la solution de Jean Marcel est aisément modifiable, je lui en laisse le soin.

Espérant avoir contribué.
 

Pièces jointes

  • Copie de Combobox trie.xls
    65.5 KB · Affichages: 48

Papou-net

XLDnaute Barbatruc
Re : Trie alpha pour combobox

RE :

JM a oublié de déclarer sa variable Tablo :

Code:
Private Sub UserForm_Initialize()
    Dim Tablo()
    With Sheets("Repertoire")
                    For i = 1 To .Range("A65536").End(xlUp).Row - 2
                        ReDim Preserve Tablo(1 To i)
                        Tablo(i) = .Cells(i + 2, 1)
                    Next
                End With
                For i = 1 To UBound(Tablo)
                    For j = 1 To UBound(Tablo)
                        If Tablo(i) < Tablo(j) Then
                            temp = Tablo(i)
                            Tablo(i) = Tablo(j)
                            Tablo(j) = temp
                        End If
                    Next j
                Next i
                    For Itm = 1 To UBound(Tablo)
                        Me.ComboBox1.AddItem Tablo(Itm)
                    Next
     
End Sub

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Trie alpha pour combobox

...si tu reprends mon premier fichier le tablo était bien déclaré dans l'initialyse

RE Jean Marcel,

C'est exact, mais sa portée reste locale à la procédure Initialize. Il faut donc la déclarer également dans la procédure Combobox1_Click(), ou alors la déclarer en Public dans un module standard.

Bonne fin de journée à toi.

Cordialement.
 

Habitude

XLDnaute Accro
Re : Trie alpha pour combobox

Bonjour

En utilisant les fonctions native
Pas très performant

Code:
 Tablo = Range("A:A").SpecialCells(xlCellTypeConstants)
    With Range("IV1").Resize(UBound(Tablo), 1): .Value = Tablo: .Sort key1:=Range("IV1"): Me.ComboBox1.List = Application.Transpose(.Value): .Clear: End With

Sinon, avec tri bouclé

Code:
Tablo = Application.Transpose(Range("A:A").SpecialCells(xlCellTypeConstants))
    For i = 1 To UBound(Tablo)
        For j = 1 To UBound(Tablo)
            If Tablo(i) < Tablo(j) Then
                temp = Tablo(i): Tablo(i) = Tablo(j): Tablo(j) = temp
            End If
        Next j
    Next i
    Me.ComboBox1.List = Tablo


nb. je vois que je suis en retard
 
Dernière édition:

apdf1

XLDnaute Impliqué
Re : Trie alpha pour combobox

Re

papou sur ton code il n'y a aucun décalage et sa marche mais peut tu m'expliquer pourquoi tu as codé sur les colonne AA à AI alors que moi je travail dans les colonne "A à J"

Code:
      Dim Cell As Range, derlg As Long
Application.ScreenUpdating = False
    With Sheets("Repertoire")
      derlg = .Range("A65536").End(xlUp).Row
      .Range("AA3:AI" & derlg).Value = .Range("A3:I" & derlg).Value
      .Range("AA3:AI" & derlg).Sort Key1:=Range("AA3"), Order1:=xlAscending, Key2:=Range("AB3" _
        ), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
        For Each Cell In .Range("AA3:AA" & derlg)
            Me.ComboBox1.AddItem (Cell)
        Next
    End With
Application.ScreenUpdating = True

Mais sa marche ?

@+
 

Papou-net

XLDnaute Barbatruc
Re : Trie alpha pour combobox

Re

papou sur ton code il n'y a aucun décalage et sa marche mais peut tu m'expliquer pourquoi tu as codé sur les colonne AA à AI alors que moi je travail dans les colonne "A à J"

@+

J'ai trié sur ce tableau intermédiaire pour ne pas modifier ton tableau original. Mais comme je le disais dans ma première réponse, il serait en effet préférable de trier le tableau principal et alors, plus besoin des colonnes intermédiaires. Sinon, la dernière version (4) de Jean Marcel fonctionne parfaitement bien.

Cordialement.
 

david84

XLDnaute Barbatruc
Re : Trie alpha pour combobox

Bonsoir tout le monde,
sur la base du code de Jean-Marcel:), on peut raccourcir et gagner en rapidité :
Code:
Private Sub UserForm_Initialize()
Tablo = Sheets("Repertoire").Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
For i = 1 To UBound(Tablo)
    For j = 1 To UBound(Tablo)
        If Tablo(i, 1) < Tablo(j, 1) Then
            temp = Tablo(i, 1)
            Tablo(i, 1) = Tablo(j, 1)
            Tablo(j, 1) = temp
        End If
    Next j
Next i
Me.ComboBox1.List = Tablo
End Sub
A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Trie alpha pour combobox

Bonsoir,

Pour la rapidité, utiliser un tri Quick-Sort plutôt que Bubble
0,06 sec au lieu de 15 sec pour 10.000 éléments


JB
 

Pièces jointes

  • CompareTri.xls
    29 KB · Affichages: 72
  • FormListeTriee.xls
    38 KB · Affichages: 50
Dernière édition:

Discussions similaires

Réponses
19
Affichages
1 K

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33