Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tri des feuilles d'après cellule

Herlay

XLDnaute Junior
Bonjour le Forum,

Je recherche à trier les feuilles de mon classeur dans l'ordre, en fonction du contenu de la cellule ("E1") de chaque feuille.

J'ai essayé avec ce code :
Code:
Sub TrierOnglets()
    Dim Boucle As Integer, Compteur As Integer
    Dim sh As Worksheet
    Dim Numero As Integer
    
For Each sh In Worksheets  
  Numero = sh.Range("e1").Value
    MsgBox Numero
    For Boucle = 1 To Sheets.Count
        For Compteur = 1 To (Boucle - 1)
            If (UCase(Sheets(Boucle).Numero) < UCase(Sheets(Compteur).Numero)) Then
                Sheets(Boucle).Move before:=Sheets(Compteur)
                Exit For
            End If
        Next Compteur
    Next Boucle
Next
End Sub
Mais j'ai une erreur 438 : Propriété ou méthode non gérée par cet objet.
C'est la variable "numero" qui vas pas, mais c'est pourtant par elle que le tri doit ce faire.

Merci de votre aide

Herlay
 

ROGER2327

XLDnaute Barbatruc
Re : Tri des feuilles d'après cellule

Bonsoir Herlay
Je n'ai pas compris la structure de votre code. Je vous en propose une autre qui semble faire ce que vous souhaitez :
Code:
[COLOR=DarkSlateGray][B]Sub TrierOnglets()
Dim i&, j&, Dat(), v1$, v2$
  ReDim Dat(1 To Sheets.Count, 1 To 2)
  For i = 1 To Sheets.Count
    Dat(i, 1) = UCase(Sheets(i).[E1].Value): Dat(i, 2) = Sheets(i).Name
  Next i
  For i = 1 To Sheets.Count
    v1 = Dat(i, 1): v2 = Dat(i, 2)
    For j = 1 To Sheets.Count
      If Dat(j, 1) < v1 Then Dat(i, 1) = Dat(j, 1): Dat(j, 1) = v1: v1 = Dat(i, 1): Dat(i, 2) = Dat(j, 2): Dat(j, 2) = v2: v2 = Dat(i, 2)
    Next j
  Next i
  For i = 1 To Sheets.Count
    Sheets(Dat(i, 2)).Move before:=Sheets(1)
  Next i
End Sub[/B][/COLOR]
ROGER2327
#4541


Samedi 14 As 138 (Saint Pierre Bonnard, peintre des Phynances, SQ)
26 Brumaire An CCXIX
2010-W46-2T21:28:42Z
 

Herlay

XLDnaute Junior
Re : Tri des feuilles d'après cellule

Bonsoir ROGER,
Merci d'avoir répondu,
Mon code était une mauvaise adaptation d'un "tri des feuilles par le nom".

Le votre répond tout à fait à mes besoins. Me reste plus qu'a comprendre son fontionnement.

Encore Merci

Herlay
 

ROGER2327

XLDnaute Barbatruc
Re : Tri des feuilles d'après cellule

Re...
Quelques commentaires :
La première boucle FOR... NEXT charge dans le tableau Dat à deux colonnes le contenu de la cellule E1 et le nom de l'onglet de chaque feuille.
Les deux boucles imbriquées suivantes trient le tableau Dat en ordre croissant sur la première colonne.
La dernières boucle réorganise l'ordre des feuilles en fonction des données triées du tableau Dat.
Voilà…
Bon courage.

ROGER2327
#4543


Samedi 14 As 138 (Saint Pierre Bonnard, peintre des Phynances, SQ)
26 Brumaire An CCXIX
2010-W46-2T22:04:31Z
 

Discussions similaires

Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…