Tri decroissant

Bonjour,

voici le tri croissant de la colonne A en vba :

Columns("A:A").Sort Key1:=Range("A1")

comment ecrire un code qui indique un tri décroissant?

merci d'avance

Bonjour

Le Code que tu donnes est incomplet.

Pour avoir facilement, ce que tu souhaites, utilise l'enregistreur de macro.

Pour trier la colonne A, un exemple :

Sub TriCroissant()
   Columns("A:A").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
Sub TriDecroissant()
    Columns("A:A").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Cordialement

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

Rechercher des sujets similaires à "tri decroissant"