- Tri d'une partie des feuilles.

J

JB

Guest
- Bonjour les Forumwomen et Forumen,

voici mon petit problême.

J'aimerais trier les feuilles d'un classeur par ordre alphabétique mais pas toutes. Ma première feuille est une feuille récapitulative et j'aimerais qu'elle reste à sa place tout en gardant son nom actuel.
Je signale que des feuilles sont créées ou supprimées régulièrement avec mises à jour automatiques sur ma première feuille.

Merci d'avance,

JB
 
Z

Zon

Guest
Salut,

J'avais fait pas longtemps une procédure pour le tri des feuilles, dans ton cas en changeant l'indice pour le tri, à coller dans un module

Option Explicit
Option Base 1
Dim T()

Sub Princ()
Dim I As Long, J As Byte
Application.ScreenUpdating = False
ReDim T(ThisWorkbook.Worksheets.Count)
For I = 1 To ThisWorkbook.Worksheets.Count
T(I) = Sheets(I).Name
Next I
TrieTableau 2, UBound(T) 'Mettre 1 pour trier toutes les feuilles, 3 à partir de la 3 eme etc..
J = 0
For I = UBound(T) To 1 Step -1
Sheets(T(I)).Move after:=Sheets(ThisWorkbook.Worksheets.Count - J)
J = J + 1
Next I
End Sub

Sub TrieTableau(Deb As Long, Fin As Long)
'Ti
Dim IndiceInf As Long, IndiceSup As Long
Dim Temp1, Pivot
IndiceInf = Deb
IndiceSup = Fin
Pivot = UCase(T((Deb + Fin) \ 2))
Do
While UCase(T(IndiceInf)) < Pivot
IndiceInf = IndiceInf + 1
Wend
While Pivot < UCase(T(IndiceSup))
IndiceSup = IndiceSup - 1
Wend
If IndiceInf <= IndiceSup Then
Temp1 = T(IndiceInf)
T(IndiceInf) = T(IndiceSup)
T(IndiceSup) = Temp1
IndiceInf = IndiceInf + 1
IndiceSup = IndiceSup - 1
End If
Loop Until IndiceInf > IndiceSup
If Deb < IndiceSup Then TrieTableau Deb, IndiceSup
If IndiceInf < Fin Then TrieTableau IndiceInf, Fin
End Sub


A+++
 

Discussions similaires

Statistiques des forums

Discussions
313 102
Messages
2 095 299
Membres
106 244
dernier inscrit
Zamot