dianbobo
Messages postés151Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention15 juin 2014
-
9 juin 2010 à 19:24
dianbobo
Messages postés151Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention15 juin 2014
-
10 juin 2010 à 12:32
bonjour tout le monde je voudrai faire un tri décroissant puis retourner l'avant derniere valeur plus petite du tableau dans une cellule.
les 100 dernieres valeurs c'est a dire compter les 100 valeurs a partir de la derniere valeur du tableau du coup j'ai lancer l'enregistreur de macro mais je n'arrive pas a simplifier la macro :
Sub Macro2()
'
' Macro2 Macro
'
' Touche de raccourci du clavier: Ctrl+b
'
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("D3"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("D180:D220")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 juin 2010 à 01:01
Salut
Je ne vois pas trop ce que tu veux simplifier ...
Si tu classes les données dans le sens croissant (+ petit au + grand), l'avant dernière plus petite valeur sera donc en ligne 2
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
dianbobo
Messages postés151Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention15 juin 2014 10 juin 2010 à 12:32
bonjour tout le monde
voila j'ai bricoler un code
je vous explique ce que j'essai de faire en réalité
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:
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: