Syntaxe de VB, Tri

Résolu
Patscaph -  
 Patscaph -
Bonjour,
Excel 2007,
Je bugg dans la formulation suivante car ma syntaxe fait définitivement défaut. Je souligne les endroits que je crois problématique pour que quelqu'un puisse rapidement me suggérer la formulation acceptable Merci....

Ceci fait la recherche de la denière ligne de la colonne 35 et y applique un tri de la ligne 6 jusqu'à derlig pour par la suite les entrer dans un ComboBox1. Je sais que l'entée dans le combobox fonctionne bien mais la première partie consistant au tri est difficile à délimiter. Range.... Peut être y a-t-il autre problème à vous de voir Merci

Dim I As Long, DerLig As Long

DerLig = .Cells(Rows.Count, 35).End(xlUp).Row 'Spécifie la colonne35 de la Feuille de calcul
Rows("6:Derlig").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("AI6:AI $ Derlig" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("AQ6:AQ & Derlig" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A6:AR & Derlig")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A6").Select
End Sub

With Sheets("Feuil1") 'Ici, il faut mettre le bon nom de l'onglet
DerLig = .Cells(Rows.Count, 35).End(xlUp).Row 'Spécifie la colonne35 de la Feuille de calcul
For I = 6 To DerLig 'Débute à la ligne 6 pour se poursuivre jusqu'à la dernière ligne
Me.ComboBox1.AddItem .Cells(I, 35).Value 'Aditionne les infos de la colonne 35 à la I ligne
Next I
End With

End Sub

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Excusez l'incruste...

    Pour remplir un combo avec une liste triée :
    Private Sub blabla 'ADAPTE selon l'événement choisi !!!!!  
    'le remplissage du combo :  
    Dim temp()
    
    temp = Application.Transpose(Sheets("Feuil1").Range("AI6:AI" & Sheets("Feuil1").Range("AI" & Rows.Count).End(xlUp).Row).Value)  
    Call tri(temp, LBound(temp), UBound(temp))  
    ComboBox1.List = temp  
    End Sub  
    
    'La procédure de tri  
    Sub tri(a(), gauc, droi) ' Quick sort  
    'sources :  
        'http://boisgontierjacques.free.fr/pages_site/tableaux.htm  
    Dim ref, g As Long, d As Long, temp  
      ref = a((gauc + droi) \ 2)  
      g = gauc: d = droi  
      Do  
        Do While a(g) < ref: g = g + 1: Loop  
        Do While ref < a(d): d = d - 1: Loop  
        If g <= d Then  
          temp = a(g): a(g) = a(d): a(d) = temp  
          g = g + 1: d = d - 1  
        End If  
      Loop While g <= d  
      If g < droi Then Call tri(a, g, droi)  
      If gauc < d Then Call tri(a, gauc, d)  
    End Sub 

    Cordialement,
    Franck P
    1
    1. Patscaph
       
      j'ai regroupé cette question avec une autre que j'ai posté à Michel_M et je crois que tu es aussi sur le coup... Je vais tout de même analyser le code que tu me proposes Merci
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Rows("6:Derlig").Select ------->Rows("6:" & Derlig).Select

    Range("AI6:AI $ Derlig")------>Range("AI6:AI" & Derlig)

    idem pour toutes les erreurs range

    .SetRange Range("A6:AR & Derlig") Deux fois range ????

    Bonne suite
    0
    1. Patscaph
       
      merci
      0