TRI DECROISSANT

dianbobo Messages postés 167 Statut Membre -  
dianbobo Messages postés 167 Statut Membre -
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

  1. dianbobo Messages postés 167 Statut Membre 1
     
    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