IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Classer des feuilles Excel par ordre alphabétique


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Classer des feuilles Excel par ordre alphabétique
    J'ai une centaine de feuilles dans excel à classer. Elles portent des noms type "xxxx (1)", "xxxx (2)" ect "xxxx (20)"
    J'ai trouvé une macro sur ce topic http://www.developpez.net/forums/d13...nologiquement/
    mais les feuilles se classent pas exactement comme je veux. Elles se classent comme ça:

    "xxxx (1)", "xxxx (10)","xxxx (2)" ect "xxxx (20)"

  2. #2
    Membre régulier Avatar de Efgé2
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Points : 76
    Points
    76
    Par défaut
    Bonjour wywy22n
    Une proposition avec un quick sort de tri
    Il faut tout placer dans le même module
    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub Tri_Onglets()
    Dim I&, F As Worksheet, d As Object, T As Variant, Flag As Boolean
    Dim ActF As Worksheet
    Set ActF = ActiveSheet
    Set d = CreateObject("Scripting.Dictionary")
    For Each F In Worksheets
        If InStr(F.Name, "(") Then
            d(Format(Split(Replace(F.Name, ")", ""), "(")(1), "000")) = F.Name
        Else
            Flag = True
        End If
    Next F
     
    T = d.Keys
     
    Call tri(T, 0, UBound(T))
    Application.ScreenUpdating = False
    For I = LBound(T) To UBound(T) - Not Flag
        Sheets(d(T(I))).Move Before:=Sheets(I + 1)
    Next I
    ActF.Activate
    End Sub
    Le tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub tri(a, gauc, droi)  ' Quick sort http://boisgontierj.free.fr/
    Dim Ref&, g&, d&, Temp$
      Ref = a((gauc + droi) \ 2)
      g = gauc: d = droi
      Do
        Do While a(g) < Ref: g = g + 1: Loop
        Do While Ref < a(d): d = d - 1: Loop
        If g <= d Then
          Temp = a(g): a(g) = a(d): a(d) = Temp
          g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call tri(a, g, droi)
      If gauc < d Then Call tri(a, gauc, d)
    End Sub
    Cordialement

  3. #3
    Membre régulier Avatar de Efgé2
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Points : 76
    Points
    76
    Par défaut
    Bonjour wywy22, Bonjour à tous,
    Hier soir je n'avais pas vu que le fil cité parlait de ComboBox (désolé )

    Une proposition plus adaptée :
    Premier bouton pour créer les feuilles de "XXX (1)" à "XXX (300)" en ordre aléatoire
    Deuxième bouton pour afficher la combobox triée.

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci, pour votre aide, j'ai utilisé le code de la première réponse et sa fonctionne parfaitement.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut une methode tres simple
    Bonjour
    Sinon il y avait ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub met_en_ordre_alpha_les_feuilles()
     Dim X As Variant
     Dim I As Variant
     For Each X In ActiveWorkbook.Sheets
     For I = 2 To ActiveWorkbook.Sheets.Count
     If Sheets(I-1).Name>Sheets(I).Name Then
     Sheets(I-1).Move After:=Sheets(I)
     End If
     Next
     Next
     End Sub
    Au plaisir

Discussions similaires

  1. Classer des feuilles Excel chronologiquement
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/03/2013, 14h25
  2. [XL-2003] Classer les feuilles nommées par ordre alphabétique
    Par macat dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/09/2009, 18h07
  3. [XL-2003] Naviguer entre des feuilles excel par UserForm
    Par P96O1004 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/04/2009, 10h15
  4. Protection des feuilles excel par mdp
    Par zephirsoul dans le forum Excel
    Réponses: 2
    Dernier message: 27/11/2007, 18h40
  5. [MySQL] Classer des résultats par ordre alphabétique
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/07/2006, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo