Classer par ordre ALPHAETIQUE onlets(feuilles)

Hello la commu

Petit sujet ajd, je ne parviens pas a faire un classement par ordre alphabétique de toutes mes feuilles une fois celles ci affichées

Si qqun a la solution alors merci d'avance

PS : je vais essayer de mettre le fichier pas WEtransfere car il pèse 10MO

Merci

Salut,

Avec une recherche internet je suis tombé la dessus, je te laisse la tester :

Sub SortWorkBook()
'Updateby20140624
Dim xResult As VbMsgBoxResult
xTitleId = "KutoolsforExcel"
xResult = MsgBox("Sort Sheets in Ascending Order?" & Chr(10) & "Clicking No will sort in Descending Order", vbYesNoCancel + vbQuestion + vbDefaultButton1, xTitleId)
For i = 1 To Application.Sheets.Count
    For j = 1 To Application.Sheets.Count - 1
        If xResult = vbYes Then
            If UCase$(Application.Sheets(j).Name) > UCase$(Application.Sheets(j + 1).Name) Then
                Sheets(j).Move after:=Sheets(j + 1)
            End If
            ElseIf xResult = vbNo Then
                If UCase$(Application.Sheets(j).Name) < UCase$(Application.Sheets(j + 1).Name) Then
                    Application.Sheets(j).Move after:=Application.Sheets(j + 1)
            End If
        End If
    Next
Next
End Sub

la solution proposée au dessus ne fonctionne pas

j'ai déja vu ca sur YouTube ou autre mais ne s'adapte pas a mon fichier

Salut, peux-tu m'envoyer ton fichier ? Car la macro marche pour moi

Cordialement,
Parrish

Bonjour à tous,

Cà fonctionne pour moi aussi avec le code de parrish.

Le code dans workbook, ascending oder pour Aà Z, descending order pour Z à A.

Cdt

Bonjour Fronck,

Ca était vu en privée, le problème viens de son fichier qui comporte + de 300 onglets et qui est du coup beaucoup trop lourd pour que la macro le supporte

Cordialement,
Parrish

bonjour,

une proposition, on ne déplace les feuilles qu'une fois qu'on a trié leurs noms. (j'ai fait le test avec 500 feuilles)

Sub aargh()
    ReDim f(Sheets.Count)
    For i = 1 To Sheets.Count
        f(i) = Sheets(i).Name
    Next i
    For i = 1 To Sheets.Count - 1
        For j = i + 1 To Sheets.Count
            If f(i) > f(j) Then a = f(i): f(i) = f(j): f(j) = a
        Next j
    Next i
    For i = 1 To Sheets.Count
        Sheets(f(i)).Move before:=Sheets(i)
    Next i
End Sub

la macro ci-dessus ne fonctionne pas avec le fichier de navek, j'ai dû adapter la macro (version ci-dessous qui elle fonctionne bien sur le fichier en question). Mais je n'ai pas compris pourquoi la première version ne fonctionne pas (les onglets ne sont pas affichés dans l'ordre alphabétique).

Sub aargh()
    ReDim f(Sheets.Count)
    For i = 1 To Sheets.Count
        f(i) = Sheets(i).Name
    Next i
    For i = 1 To Sheets.Count - 1
        For j = i + 1 To Sheets.Count
            If f(i) > f(j) Then a = f(i): f(i) = f(j): f(j) = a
        Next j
    Next i
    Sheets(f(1)).Move before:=Sheets(1)
    For i = 2 To Sheets.Count
        Sheets(f(i)).Move after:=Sheets(f(i - 1))
    Next i
End Sub

ok parrish

Cà marche merci hs2o4.

Bonjour H2so4,

D'ailleurs tu connaitrais une version ou quand nous renommons directement une feuille celle-ci ce classe toute seule ?

Cordialement,
Parrish

bonjour,

le renommage d'une feuille ne génère pas d'événement que l'on peut intercepter via VBA. mais une solution simple serait d'utiliser un autre événement pour lancer la macro de tri des onglets (exemple lançant la macro suite à un recalcul ou suite à un changement dans une cellule, ou la sélection d'une cellule).

Bonjour à tous,

Je vais peut être dire une connerie et ne connais pas le besoin de ce fichier, mais >500 feuilles, il n'y a pas un soucis de conception ?

Autre question en tant que novice, à quoi sert l'instruction

ReDim f(Sheets.Count)

Si l'on ne supprime ou n'ajoute pas de feuille ? L'array reste le même non ?

Bonne soirée !

bonjour Ergotamine,

Autre question en tant que novice, à quoi sert l'instruction

ReDim f(Sheets.Count)

Si l'on ne supprime ou n'ajoute pas de feuille ? L'array reste le même non ?

Bonne soirée !

cette instruction sert à dimensionner une array vba au nombre variable de feuilles contenues dans le classeur (l'instruction Dim ne permettant pas l'utilisation d'une variable) et donc cette macro est utilisable telle quelle dans n'importe quel classeur.

Rechercher des sujets similaires à "classer ordre alphaetique onlets feuilles"