trier feuille ordre inverse selon valeur cellule et numéro

Piboulet

XLDnaute Nouveau
Bonjour le Forum,
Je n'arrive pas à adapter de code existant à mon cas.
Je cherche à trier les feuilles semaines dans l'ordre inverse (un roulement d'environ 20 semaines) , en fonction du contenu de la date figurant en A9 dans chaque feuille. La plus récente à côté de ma feuille Exploitation.

J'utilise actuellement ce code :
Sub classer() Dim i, cel As Integer
On Error Resume Next
For i = 1 To 53
Sheets("S" & i).Move after:=Sheets("Exploitation")
Next i
On Error GoTo 0
End Sub
Cela marche, mais le classement se fait par le num de semaine. Je vais être coincé début d'année prochaine.
Dans l'exemple, je voudrais avoir : Exploitation, S2, S1, S52, S51, S3 (S3 étant de début 2014)
Merci pour votre aide éventuelle
 

Pièces jointes

  • classer feuille.xls
    436.5 KB · Affichages: 31

camarchepas

XLDnaute Barbatruc
Re : trier feuille ordre inverse selon valeur cellule et numéro

Bonjour ,

Voici une solution possible

Code:
 Sub classer()
'cela marche mais le classement se fait par le num de semaine
  Dim Onglet As Worksheet
  Dim Feu() As String
  Dim Indexe As Long, Tri As Long
  Dim Tampon As String
  Dim Bouge As Boolean
   Application.ScreenUpdating = False
   ReDim Feu(1, ThisWorkbook.Worksheets.Count) As String
   Indexe = 1
      For Each Onglet In ThisWorkbook.Sheets
        If Onglet.Name <> "Exploitation" Then
         Feu(0, Indexe) = Mid(Onglet.Name, 2) + Onglet.Range("D1") * 100
         Feu(1, Indexe) = Onglet.Name
         Indexe = Indexe + 1
        End If
      Next
      Do
      Bouge = False:
      For Tri = 1 To Indexe - 2
       If Feu(0, Tri) > Feu(0, Tri + 1) Then
         Tampon = Feu(1, Tri): Feu(1, Tri) = Feu(1, Tri + 1): Feu(1, Tri + 1) = Tampon
         Tampon = Feu(0, Tri): Feu(0, Tri) = Feu(0, Tri + 1): Feu(0, Tri + 1) = Tampon
         Bouge = True
       End If
       
      Next
      Loop Until Bouge = False
      For Tri = 1 To Indexe - 1
         Sheets(Feu(1, Tri)).Move after:=Sheets("Exploitation")
      Next
End Sub
 

Piboulet

XLDnaute Nouveau
Re : trier feuille ordre inverse selon valeur cellule et numéro

Bonjour camarchepas, le Forum,
Je te remercie pour cette aide; je suis arrivé à adapter le code dans le fichier opérationnel. Avec quelques difficultés car dans le fichier exemple, je n'avais pas tout dit ni tout mis. En particulier plein d'autres feuilles.
J'ai du introduire (extrait):
Dim t() As Variant
For Each Onglet In ThisWorkbook.Sheets
t = Array("Version", "Modèle", "Exploitation", "Accueil", "Gérer_Passages", "Gérer_Sites", "Listes", "Utilitaire")
If IsError(Application.Match(Onglet.Name, t, 0)) Then (le code)
pour exclure les feuilles à ne pas classer.
Bref, cela marche.... Encore merci.
 
Dernière édition:

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll