Syntaxe de VB, Tri

Résolu/Fermé
Patscaph - 28 févr. 2013 à 04:45
 Patscaph - 1 mars 2013 à 04:07
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
Modifié par pijaku le 28/02/2013 à 13:34
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
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 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
Modifié par f894009 le 28/02/2013 à 09:05
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
merci
0