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

  • Initiateur de la discussion Initiateur de la discussion Herlay
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
518
Réponses
3
Affichages
569
Réponses
10
Affichages
714
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…