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 éclairé 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
    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 éclairé 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
    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
    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
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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