Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

le tri decroissant

dianbobo

XLDnaute Junior
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 :
Code: Tout sélectionner
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:

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:

Code:
t(j) = Worksheets("Feuil1").Cells(j, 4).Value
t(k) = Worksheets("Feuil1").Cells(k, 4).Value
t(position_mini)
merci de votre aide
 

Discussions similaires

Réponses
4
Affichages
354
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…