Excel: Deplacer et re-arranger des feuilles

Résolu
Bonjour,

Voici mon probleme, j'ai un classeur excel comportant les feuilles suivantes:

- LISTE
- Feuille 1
- Feuille 2
- Feuille 3
- Feuille 4
....

Dans chacune de ces feuilles, se trouve une valeur numerique quelconque sur une case identique ( par example A1: Colonne A, Ligne 1).

Maintenant, je voudrai ajouter un bouton commande sur la feuille nommee LISTE ( Ca, je peux le faire ), qui par un simple click, m'aidera a deplacer et repositioner automatiquement les feuilles dans un ordre croissant ( ou decroissant ) en fonction de leur valeur numerique se trouvant dans la case A1.

Y a t'il une fonction macro applicable?

Je travaille sur Excell 2003, merci

2 réponses

  1. Michel, merci infinement
    0
    1. Contributeur
      Bonjour

      tri dans l'ordre décroissant de A5 dans feuil1,2,3....N
      "liste" doit être en premier

      Option Explicit
      Sub ranger()
      Dim tablo()
      Dim nbre As Byte, cptr As Byte, i As Byte, j As Byte, k As Byte
      Dim tmp0 As Double, tmp1 As String
      ' nombre de feuilles
      nbre = ThisWorkbook.Sheets.Count - 1
      
      'construit un tableau 2 dimension et "nbre" d'éléments
      ReDim tablo(nbre - 1, 1)
      
      'remplit le tableau avec le nom des onglets et la valeur en A5
      Do Until cptr = nbre
          tablo(cptr, 0) = Sheets("feuil" & cptr + 1).Range("A5").Value
          tablo(cptr, 1) = Sheets("feuil" & cptr + 1).Name
          cptr = cptr + 1
      Loop
      
      'range le tableau dans l'ordre croissant de A5
      For i = 0 To nbre
              j = i
              For k = j + 1 To nbre - 1
                  If tablo(k, 0) <= tablo(j, 0) Then j = k
              Next k
          If i <> j Then
              tmp0 = tablo(j, 0)
              tmp1 = tablo(j, 1)
              tablo(j, 0) = tablo(i, 0)
              tablo(j, 1) = tablo(i, 1)
              tablo(i, 0) = tmp0
              tablo(i, 1) = tmp1
          End If
        Next i
        
        'fige défilement de l'écran
        Application.ScreenUpdating = False
        'range les feuilles dans l'ordre décroissant de A5
       cptr = 0
       For cptr = 0 To UBound(tablo)
          Sheets(tablo(cptr, 1)).Move before:=Sheets(2)
      Next
        
      End Sub
      


      demo:
      http://www.cijoint.fr/cjlink.php?file=cj201006/cijLLXxaOe.xls
      -1