Fonction de tri ordre croissant

Bonjour à tous, me voici encore dans mes péripéties sur vba :D

J'ai réussi à faire ma fonction minimum, maintenant le but serait de faire un tri par ordre croissant, voici ma fonction minimum

Sub macro()

Dim min, courant
Dim tab1(6)
Dim i As Integer

For i = 0 To 5
tab1(i) = Range("A" & i + 1)
Debug.Print "tableau : " & tab1(i)
Next

min = 0

For i = 1 To 5

If tab1(min) > tab1(i) Then
min = i

End If

Next

Debug.Print "valeur minimale :" & tab1(min)

End Sub

Maintenant j'aimerais faire un tri dans ce style là (j'ai trouvé ça sur internet) : "On parcourt la liste en entier, en ´echangeant `a chaque fois les ´el´ements adjacents s’ils ne sont pas dans l’ordre. A la fin de cette ´etape, l’´el´ement le plus grand est `a la fin de la liste."

Mais je ne saurais pas comment faire, pourriez vous me donner des pistes ? Merci d'avance :)

Bonjour,

Tu peux utiliser l'enregistreur de macro pour cela.

Bonjour super(julien?), Thrrybo,

Voici comment j'ai appris à trier en ordre croissant de façon "Algo" à l'école.

Ici l'exemple est sur les celluels A1:A30

Sub OrdreCroissant()
For i = 1 To 30
    For j = 1 To 29
        If Cells(j, 1) > Cells(j + 1, 1) Then
            memoire = Cells(j, 1)
            Cells(j, 1) = Cells(j + 1, 1)
            Cells(j + 1, 1) = memoire
        End If
    Next j
Next i
End Sub

A+

Bonjour gabin37, oui c'est ça, superjulien :D

Voici ce que j'ai réussi à faire ce matin, on a globalement la même chose

Sub macro()

Dim min, temp
Dim tab1(6)
Dim i As Integer

For i = 0 To 5
tab1(i) = Range("A" & i + 1)
Debug.Print "tableau : " & tab1(i)
Next

min = 0

For j = 1 To 6

    For i = 1 To 5

        If tab1(i) > tab1(i + 1) Then
        temp = tab1(i)
        tab1(i) = tab1(i + 1)
        tab1(i + 1) = temp

        End If

    Next i

Next j

End Sub

En théorie ça fonctionne, mais en pratique j'aimerais que cet algo me réécrive le tableau sur la colonne B (cette fois ci ordonné)

Tu n'as qu'as ajouter à la fin du programme une boucle qui affiche le tableau dans la colonne B

For i = 0 To 5
 Range("B" & i + 1) = tab1(i)
Next

C'est bon, grâce à ton aide j'ai fini :)

Sub macro()

Dim min, temp
Dim tab1(6)
Dim i As Integer

For i = 0 To 5
tab1(i) = Range("A" & i + 1)
Debug.Print "tableau : " & tab1(i)
Next

min = 0

For j = 0 To 5

    For i = 0 To 4

        If tab1(i) > tab1(i + 1) Then
        temp = tab1(i)
        tab1(i) = tab1(i + 1)
        tab1(i + 1) = temp

        End If

    Next i

Next j

For i = 0 To 5
 Range("B" & i + 1) = tab1(i)
Next

End Sub

Merci beaucoup pour ton aide

Rechercher des sujets similaires à "fonction tri ordre croissant"