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


A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
Patscaph
 
merci
0