bonjour,
j'aurai besoin de vos talents pour m'aider a implementer un code sur VBA pour excel qui me fera un tri rapide (quicksort) d'une serie de chiffre dans une colonne sans necessairement connaitre combien de valeurs j'ai
voila ce quil faut faire :
la methode qui doit etre utilisée est la methode pivot fixe . idealement la derniere valeur de ma serie.
je dois avoir une sub qui me lit les donnees a partir de ma feuille excel qui les mets ensuite en memoire , ensuite , CEST LA FONCTION qui me permettra de faire le tri .
elle doit faire en sorte de faire avancer mon pivot vers l'avant jusqu'a temps ou toutes les valeurs qui sont devant lui sont plus petites a lui ,
ensuite je prend un autre pivot pour faire le travail pour les donnees qui sont restés deriere et ainsi de suite ,
jai commence avec ce code la :
-----------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Sub litcalculecrit() Dim donnees(2302) As Double, i As Integer, mini As Double, maxi As Double, tri As Double 'Etape de lecture For i = 1 To 2302 donnees(i) = Worksheets("feuil1").Cells(i, 1).Value Next i 'etape de calcul tri = Trirapid(donnees) 'etape decriture For i = 1 To 2302 Worksheets("feuil1").Cells(i, 2).Value = donnees(i) Next -------------------------------------------------------------- Function Trirapid(donnees() As Double) As Double Dim n As Double, i As Long, temp As Double, pivot As Double, j As Long n = UBound(donnees) - LBound(donnees) + 1 pivot = donnees(n) For i = 1 To n - 1 If pivot < donnees(i) Then temp = donnees(i) For j = i + 1 To n - 1 donnees(j - 1) = donnees(j) Next donnees(n - 1) = donnees(n) donnees(n) = temp i = i - 1 End If Next
MERCI DE VOTRE AIDE à l'avance
Partager