TRI DECROISSANT

Fermé
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 9 juin 2010 à 19:30
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 10 juin 2010 à 12:28
Bonjour,

voici le tri croissant de la colonne A en vba :
Columns("A:A").Select
Selection.Sort Key1:=Range("A1")

comment ecrire un code qui indique un trri décroissant?
merci d'avance

1 réponse

dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 1
10 juin 2010 à 12:28
bonjour tout le monde
voila j'ai bricoler un code
je vous explique ce que j'essai de faire
j'ai un tableau en colonne D de taille 100 (en fait je prend un tableau de taille 100 a partir de la derniere ligne non vide du tableau) la derniere ligne est :

l = Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row

de la feuille ("feuil1") et je voudrai faire un tri decroissant de ce tableau dans ma macro ,puis ecrire à la cellule C40 de la feuille ("feuil2") l'avant dernier nombre plus petit du tableau trié:
voici un exemple supposons que dans ma feuille("feuil1") j'ai D=[0,4,-9,5,7]
je fait un tri decroissant la colonne D devient D=[7,5,4,0,-9] puis j'ecris en cellule C40 DE LA FEUILLE(feuil2) C40=0voici mon code:


Sub detemination_var()
    Dim t() As Double
    Dim k As Long
    Dim z As Double
    Dim e As Double
    Dim l As Long
    Dim j As Long
    Dim temp As Double
    Dim a As Long
    Dim position_mini As Long
    
    l = Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
    ReDim t(l - 100 To l)
    
    For k = l To LBound(t) + 2 Step -1
    'le point de départ se déclare a chaque tour,on considere provisoirement que t(k) est
   'le plus petit élément
       
        t(k) = Worksheets("Feuil1").Cells(k, 4).Value
        position_mini = k
        'on examine tous les éléments suivants:
       For j = k - 1 To LBound(t) + 1 Step -1
            t(j) = Worksheets("Feuil1").Cells(j, 4).Value
            If t(j) < t(position_mini) Then
                position_mini = j
            End If
           
            
        Next
        'à ce endroit on sait maintenant ou est le plus petit élément,il ne reste
       'plus qu'a effectuer la permutation.
        temp = t(position_mini)
         t(position_mini) = t(k)
         t(k) = temp
         'on a placé l'element numéro k,on passe à présent au suivant.
        
         
    Next
   'ecrire à la cellule C40 l'avant dernier nombre du tableau plus petit
   Worksheets("Feul2").Cells(40, 3).Value = Worksheets("Feuil1").Cells(l - 1, 4).Value
    
End Sub


j'ai deux questions ,
1)dans la forme le code que j'ai ecris est-il correcte?
2) lorsque jessai de le faire tourné j'ai l'erreur suivante: "l'indice n'appartient pas a la selection"
dans les lignes ci-dessous:


t(j) = Worksheets("Feuil1").Cells(j, 4).Value
t(k) = Worksheets("Feuil1").Cells(k, 4).Value
t(position_mini) 


merci de votre aide
0