[VBA] trier les feuilles [Résolu/Fermé]

Messages postés
36
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 mars 2013
- - Dernière réponse :  Phob - 3 mai 2012 à 10:48
bonjour,

comment peut on trier automatiquement les feuilles d'un classeur dans l'ordre alphabetique?

on est obligé de passer par une comparaison de nom de feuille ou existe-t-il une fonction plus élégante?

merci
Afficher la suite 

4 réponses

Meilleure réponse
16
Merci
Bonjour,

Rouler cette macro !

Sub TrierOnglets()

    Dim Boucle As Integer, Compteur As Integer

    For Boucle = 1 To Sheets.Count
        For Compteur = 1 To (Boucle - 1)
            If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
                Sheets(Boucle).Move before:=Sheets(Compteur)
                Exit For
            End If
        Next Compteur
    Next Boucle

End Sub
'

Lupin

Dire « Merci » 16

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64336 internautes nous ont dit merci ce mois-ci

Une petite modif, si votre classeur contient des feuilles cachées ces feuilles ne sont pas déplaçables par la méthode Move. Un petit test sur la propriété Visible de la feuille peut évite un plantage lorsque ce cas de figure se présente :

Sub TrierOnglets()

    Dim Boucle As Integer, Compteur As Integer

    For Boucle = 1 To Sheets.Count
        If Sheets(Boucle).Visible = true then
           For Compteur = 1 To (Boucle - 1)
               If Sheets(Compteur).Visible = true then
                    If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
                        Sheets(Boucle).Move before:=Sheets(Compteur)
                        Exit For
                    End If
               EndIf
           Next Compteur
        EndIf
    Next Boucle
End Sub
Un petit plus encore si vous voulez comme moi trier les onglets cachés au lieu de les ignorer :

Sub TrierOnglets()

    Dim Boucle As Integer, Compteur As Integer
    Dim list_Onglet() As String
    
    'Enregistre le statut visible des onglets dans un tableau 2D
    ReDim Preserve list_Onglet(1 To Sheets.Count, 1) As String
    For Onglet = 1 To Sheets.Count
        list_Onglet(Onglet, 0) = Sheets(Onglet).Name
        list_Onglet(Onglet, 1) = Sheets(Onglet).Visible
    Next Onglet
    
    'Trie les onglets
    For Boucle = 1 To Sheets.Count
        If Sheets(Boucle).Visible = False Then Sheets(Boucle).Visible = True
        For Compteur = 1 To (Boucle - 1)
            If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
                Sheets(Boucle).Move before:=Sheets(Compteur)
                Exit For
            End If
        Next Compteur
    Next Boucle
    
    'Réattribue le statut initial de visibilité des onglets
    For Onglet = 1 To UBound(list_Onglet)
        If list_Onglet(Onglet, 1) = 0 Then
            Sheets(list_Onglet(Onglet, 0)).Visible = False
        End If
    Next Onglet
End Sub
1
Merci
Bonjour!

c'est exactement ce que je cherchais!!!
merci beaucoup
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
0
Merci
Merci également! Très simple et avec le résultat exact que je souhaite, un code comme je les aime!
0
Merci
Excellente macro, merci à vous !