Comment adapter la routine suivante pour trier en mémoire (sans utiliser
la fonction de tri d'Excel), l'ensemble d'une plage (200,10) par exemple.
En l'état actuel, seule la colonne X est triée.
Comment faire suivre les autres ?
Merci d'avance
'***************************************************************************
*****
Sub QuickSort(ByVal Debut, ByVal Fin) 'Debut = Lbound(Datas)
,Fin=Ubound(Datas)
'Datas = ActiveCell.CurrentRegion
Bas = Debut: Haut = Fin 'X = N° de la Colonne de Ref. pour
le tri
SepDeListe = Datas((Bas + Haut) / 2, X)
Do Until Bas > Haut
Do While Datas(Bas, X) < SepDeListe
Bas = Bas + 1
Loop
Do While Datas(Haut, X) > SepDeListe
Haut = Haut - 1
Loop
If Bas <= Haut Then
TempO = Datas(Bas, X): Datas(Bas, X) = Datas(Haut, X)
Datas(Haut, X) = TempO
Bas = Bas + 1: Haut = Haut - 1
End If
Loop
If Debut < Haut Then Call QuickSort(Debut, Haut)
If Bas < Fin Then Call QuickSort(Bas, Fin)
End Sub
'***************************************************************************
*******
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis Michon
Cette procédure n'est pas destiné à l'usage que tu veux en faire !
D'ailleurs sais-tu ce que tu veux faire ?
"chris.col" a écrit dans le message de news:3fba104f$0$247$ Bonjour à tous,
Juste pour comprendre et apprendre
Comment adapter la routine suivante pour trier en mémoire (sans utiliser la fonction de tri d'Excel), l'ensemble d'une plage (200,10) par exemple. En l'état actuel, seule la colonne X est triée. Comment faire suivre les autres ?
Merci d'avance
'*************************************************************************** ***** Sub QuickSort(ByVal Debut, ByVal Fin) 'Debut = Lbound(Datas) ,Fin=Ubound(Datas) 'Datas = ActiveCell.CurrentRegion Bas = Debut: Haut = Fin 'X = N° de la Colonne de Ref. pour le tri
SepDeListe = Datas((Bas + Haut) / 2, X) Do Until Bas > Haut Do While Datas(Bas, X) < SepDeListe Bas = Bas + 1 Loop Do While Datas(Haut, X) > SepDeListe Haut = Haut - 1 Loop If Bas <= Haut Then TempO = Datas(Bas, X): Datas(Bas, X) = Datas(Haut, X) Datas(Haut, X) = TempO Bas = Bas + 1: Haut = Haut - 1 End If Loop If Debut < Haut Then Call QuickSort(Debut, Haut) If Bas < Fin Then Call QuickSort(Bas, Fin) End Sub '*************************************************************************** *******
Cette procédure n'est pas destiné à l'usage que tu veux en faire !
D'ailleurs sais-tu ce que tu veux faire ?
"chris.col" <chris.col@free.fr> a écrit dans le message de news:3fba104f$0$247$626a54ce@news.free.fr...
Bonjour à tous,
Juste pour comprendre et apprendre
Comment adapter la routine suivante pour trier en mémoire (sans utiliser
la fonction de tri d'Excel), l'ensemble d'une plage (200,10) par exemple.
En l'état actuel, seule la colonne X est triée.
Comment faire suivre les autres ?
Merci d'avance
'***************************************************************************
*****
Sub QuickSort(ByVal Debut, ByVal Fin) 'Debut = Lbound(Datas)
,Fin=Ubound(Datas)
'Datas = ActiveCell.CurrentRegion
Bas = Debut: Haut = Fin 'X = N° de la Colonne de Ref. pour
le tri
SepDeListe = Datas((Bas + Haut) / 2, X)
Do Until Bas > Haut
Do While Datas(Bas, X) < SepDeListe
Bas = Bas + 1
Loop
Do While Datas(Haut, X) > SepDeListe
Haut = Haut - 1
Loop
If Bas <= Haut Then
TempO = Datas(Bas, X): Datas(Bas, X) = Datas(Haut, X)
Datas(Haut, X) = TempO
Bas = Bas + 1: Haut = Haut - 1
End If
Loop
If Debut < Haut Then Call QuickSort(Debut, Haut)
If Bas < Fin Then Call QuickSort(Bas, Fin)
End Sub
'***************************************************************************
*******
Cette procédure n'est pas destiné à l'usage que tu veux en faire !
D'ailleurs sais-tu ce que tu veux faire ?
"chris.col" a écrit dans le message de news:3fba104f$0$247$ Bonjour à tous,
Juste pour comprendre et apprendre
Comment adapter la routine suivante pour trier en mémoire (sans utiliser la fonction de tri d'Excel), l'ensemble d'une plage (200,10) par exemple. En l'état actuel, seule la colonne X est triée. Comment faire suivre les autres ?
Merci d'avance
'*************************************************************************** ***** Sub QuickSort(ByVal Debut, ByVal Fin) 'Debut = Lbound(Datas) ,Fin=Ubound(Datas) 'Datas = ActiveCell.CurrentRegion Bas = Debut: Haut = Fin 'X = N° de la Colonne de Ref. pour le tri
SepDeListe = Datas((Bas + Haut) / 2, X) Do Until Bas > Haut Do While Datas(Bas, X) < SepDeListe Bas = Bas + 1 Loop Do While Datas(Haut, X) > SepDeListe Haut = Haut - 1 Loop If Bas <= Haut Then TempO = Datas(Bas, X): Datas(Bas, X) = Datas(Haut, X) Datas(Haut, X) = TempO Bas = Bas + 1: Haut = Haut - 1 End If Loop If Debut < Haut Then Call QuickSort(Debut, Haut) If Bas < Fin Then Call QuickSort(Bas, Fin) End Sub '*************************************************************************** *******