Tri onglet spécial
Résolu
nihcoc
Messages postés
193
Date d'inscription
Statut
Membre
Dernière intervention
-
nihcoc Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
nihcoc Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Peut-on par vba faire un tri des onglets de manière a ce que l'onglet 23 se retouve a la fin quand vous avez les onglets
Feuil1
Feuil2
feuil3
Feuil23
. dans les macros que j'ai trouvé la feuille 23 se trouve après tri entre la Feuil2 et la Feuil3
Merci d'avance a tous pour votre travail.
j'ai excel 2000
Peut-on par vba faire un tri des onglets de manière a ce que l'onglet 23 se retouve a la fin quand vous avez les onglets
Feuil1
Feuil2
feuil3
Feuil23
. dans les macros que j'ai trouvé la feuille 23 se trouve après tri entre la Feuil2 et la Feuil3
Merci d'avance a tous pour votre travail.
j'ai excel 2000
A voir également:
- Tri onglet spécial
- Caractere special - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Raccourci rouvrir onglet fermé - Guide
- Logiciel tri photo - Guide
- Dossier spécial - Guide
3 réponses
Bonjour,
Oui, parce que dans le code que vous avez, le tri doit se faire sur l'index feuille et non sur le nom de la feuille
Ou c'est normal car pour un classement "correct", il faut feuil01 pour feuil1 etc
Mais si vous ne voulez pas changer le nom des feuilles il faut modifier le code
Oui, parce que dans le code que vous avez, le tri doit se faire sur l'index feuille et non sur le nom de la feuille
Ou c'est normal car pour un classement "correct", il faut feuil01 pour feuil1 etc
Mais si vous ne voulez pas changer le nom des feuilles il faut modifier le code
Merci pour la réponse mais pourriez vous me renvoyer le code modifié
End Sub
Sub TriNomsOnglets()
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Before:=Sheets(J)
Exit For
End If
Next J
Next I
End Sub
merci pour tout.
End Sub
Sub TriNomsOnglets()
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Before:=Sheets(J)
Exit For
End If
Next J
Next I
End Sub
merci pour tout.
oui ou 1,2,3,4,5, ect.
Re,
Oui, mais pas de melange. Fait pour les deux types de nom: Feuil1 ou 1
Oui, mais pas de melange. Fait pour les deux types de nom: Feuil1 ou 1
Sub Tri_onglet_croissant() Dim Liste_N() As Long, NbO As Long, N As Long Dim Flg_F As Boolean, NmF As String NbO = Worksheets.Count ReDim Liste_N(1 To NbO) 'Feuil ou pas dans le nom d'onglet If InStr(Worksheets(1).Name, "Feuil") > 0 Then Flg_F = True NmF = "Feuil" Else Flg_F = False NmF = "" End If 'mise en tableau des noms d'onglet For N = 1 To NbO If Flg_F Then Liste_N(N) = CLng(Split(Worksheets(N).Name, "Feuil")(1)) Else Liste_N(N) = CLng(Worksheets(N).Name) End If Next N Call ShellSort(Liste_N(), LBound(Liste_N), UBound(Liste_N)) 'Proc récursive tri croissant 'tristribution des onglets par nom numero croissant For N = 1 To NbO Worksheets(NmF & Liste_N(N)).Move After:=Sheets(Sheets.Count) Next N End Sub '-------------------------------- ' Tri de Shell - Shell Sort '-------------------------------- Public Sub ShellSort(t() As Long, Optional ByVal loBound As Long = -1, Optional ByVal upBound As Long = -1) Dim i As Long, j As Long, h As Long, v As Long If loBound = -1 Then loBound = LBound(t()) If upBound = -1 Then upBound = UBound(t()) h = loBound Do: h = 3 * h + 1: Loop Until h > upBound Do h = h / 3 For i = h + 1 To upBound v = t(i): j = i Do While t(j - h) > v t(j) = t(j - h): j = j - h If j <= h Then Exit Do Loop t(j) = v Next i Loop Until h = loBound End Sub