Trier les feuilles par ordre Alphabétique sauf certaines

Bonjour,

J'ai trouvé un code qui trie les feuilles en mode Alphabétique sauf que j'aimerai que certaines feuilles ne subissent pas ce trie peut être mettre des conditions je ne sais pas trop comment faire.Merci d'avance pour vos réponse

Ci dessous est mon code qui trie les feuilles par ordre Alphabétique

Sub triefeuillealphabetique()
    Dim feuille As Worksheet, feuil2 As Worksheet
        For Each feuille In ActiveWorkbook.Worksheets

            For Each feuil2 In ActiveWorkbook.Worksheets
                If feuil2.Name > feuille.Name Then
                feuille.Move before:=feuil2
                Exit For
            End If
        Next
    Next
End Sub

Bonjour,

Une proposition avec un exemple de 5 feuilles :

Sub triefeuillealphabetique()
    Dim feuille As Worksheet, feuil2 As Worksheet
    Dim feuilles_non_triées()

    feuilles_non_triées = Array(Sheets("Feuil1"), Sheets("Feuil5"))

    For Each feuille In ActiveWorkbook.Worksheets
        If Not Sheet_In_Array(feuille, feuilles_non_triées) Then

            For Each feuil2 In ActiveWorkbook.Worksheets

                If Not Sheet_In_Array(feuil2, feuilles_non_triées) Then

                    If feuil2.Name > feuille.Name Then
                        feuille.Move before:=feuil2
                        Exit For
                    End If

                End If

            Next feuil2

        End If

    Next feuille

End Sub

Function Sheet_In_Array(sh As Worksheet, tb) As Boolean
    Dim sh_i As Variant

    For Each sh_i In tb
        If sh_i Is sh Then Sheet_In_Array = True: Exit For
    Next sh_i

End Function

Merci de votre réponse

Dans votre variable feuilles_non_triées je peux rajouter autant de feuille que je veux ? par exemple je continue , Sheets("Feuil16") ,...

Puis pouvait vous m'expliquer que fait la fonction :

Function Sheet_In_Array(sh As Worksheet, tb) As Boolean
    Dim sh_i As Variant

    For Each sh_i In tb
        If sh_i Is sh Then Sheet_In_Array = True: Exit For
    Next sh_i

End Function

Merci beaucoup d'avoir pris le temps de me répondre.

Et aussi je viens d'y pensais est-il possible que dans la variable feuille_non_triée de sélectionner une plage de feuille directement ?

Dans votre variable feuilles_non_triées je peux rajouter autant de feuille que je veux ?
Absolument

Puis pouvez vous m'expliquer que fait la fonction :

Function Sheet_In_Array(sh As Worksheet, tb) As Boolean

Cette fonction permet de savoir si une feuille est présente dans le tableau : tb. Le tableau utilisé est celui des feuilles non triées défini au début de la procédure. Par défaut, la fonction a la valeur : False (faux) , elle a la valeur : True (vrai) dès que la feuille appartient au tableau des feuilles non triées.

bonjour,

on peut faire cela en 2 boucles, 1 en mémoire et le 2ième en physique, plus efficace et moins de travail.

Question : feuil7 est avant ou après Feuil8 ? (alphabétique ?)

Sub triefeuillealphabetique2()
     Dim feuille As Worksheet, SCA, aSCA, i
     Set SCA = CreateObject("system.collections.arraylist")

     feuilles_non_triées = Array("Feuil1", "Feuil5")

     For Each feuille In ActiveWorkbook.Worksheets
          If Not IsNumeric(Application.Match(feuille.Name, feuilles_non_triées, 0)) Then SCA.Add ucase(feuille.Name)
     Next

     If SCA.Count Then
          SCA.Sort
     'SCA.Reverse
          aSCA = SCA.toarray
          For i = 0 To UBound(aSCA)
               If i <= 0 Then Sheets(aSCA(i)).Move before:=Worksheets(1) Else Sheets(aSCA(i)).Move after:=Worksheets(i)
          Next
     End If

End Sub

@BsAlv

Attention, la classe "system.collections.arraylist" n'est plus disponible en standard depuis Windows 10. L' utilisation de cette cette classe nécessite une mise à jour de Windows. A partir du paramètre Applications, il faut activer .NetFramerwork 3.5 dans les fonctionnalités Windows.

ahah, un expert ..., j'ai depuis longtemps des questions là dessus. Moi, je n'ai jamais eu des problèmes avec ce SCA et dans mes références il n'y a pas de "NetFramerwork" et quelqu'un autre, cela fonctionne pendant 3 mois et soudain fini et je ne sais pas lui donner des conseils ... .

Quels références sont actives chez vous pour prévenir ce problème et comment ca se voit que c'est bien chez moi ?

schermafbeelding 2022 07 21 175953 schermafbeelding 2022 07 21 175756

Le ..NetFramework est une panoplie d'outils contenant entre autres des bibliothèques de classe.

La classe "system.collections.arraylist" fait partie d'une bibliothèque de classe se trouvant dans .NetFramework 3.5 qui n'est plus installé en standard depuis Windows 10. Il a été remplacé par le .NetFramework 4.8 qui ne reprend pas les fonctionnalités du .NetFramework 3.5

Si donc, vous voulez bénéficier des anciennes fonctionnalités du .NetFramework 3.5 (arraylist), vous devez l'installer.

Pour cela sous Windows 11: Paramètres --> Applications --> Plus de fonctionnalités Windows --> Activer ou désactiver des fonctionnalités Windows

Après installation, vous n'avez pas pas besoin de la référence de la bibliothèque correspondante, puisque vous faites dans votre procédure, une liaison tardive (Late Binding) via un CreateObject.

@THEV,

vous l'avez bien expliqué et j'ai tout trouvé comme décrit, MERCI.

Rechercher des sujets similaires à "trier feuilles ordre alphabetique sauf certaines"