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 les feuilles nommées par ordre alphabétique [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Par défaut Classer les feuilles nommées par ordre alphabétique
    Bonjour,

    Je souhaiterais classer uniquement les feuilles nommées (NOM PRENOM) par ordre alphabétique.
    La première est nommée Récap, les suivantes sont nommées DD MM YY, et elles restent en place en premier.

    En pas à pas je lis Next sans For Mais je ne sais pas ce que le code attend.

    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
    Sub TriChaqueFeuille()
    Dim X As Variant
    Dim I As Variant
    Dim ws As Worksheets
    'Trier par ordre alphabétique toutes les feuilles (nominatives)de ce fichier
    'sauf la feuille "Récap" et les feuilles nommées numériques
     
    For Each X In ActiveWorkbook.Sheets
    For I = 2 To ActiveWorkbook.Sheets.Count
     
    For Each ws In Worksheets
        If ws.Name <> "Récap" And Not IsNumeric(Left(ws.Name, 2)) Then
    Next ws
    If Sheets(I - 1).Name > Sheets(I).Name Then
    Sheets(I - 1).Move After:=Sheets(I)
    End If
    Next
    Next
    End Sub
    Merci de votre aide.

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Vive l'indentation !!!!

    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
    Sub TriChaqueFeuille()
    Dim X As Variant
    Dim I As Variant
    Dim ws As Worksheets
    'Trier par ordre alphabétique toutes les feuilles (nominatives)de ce fichier
    'sauf la feuille "Récap" et les feuilles nommées numériques
     
    For Each X In ActiveWorkbook.Sheets
        For I = 2 To ActiveWorkbook.Sheets.Count
         
            For Each ws In Worksheets
                If ws.Name <> "Récap" And Not IsNumeric(Left(ws.Name, 2)) Then
    'Il manque end if ici
            Next ws
            If Sheets(I - 1).Name > Sheets(I).Name Then
                Sheets(I - 1).Move After:=Sheets(I)
            End If
        Next
    Next
    End Sub

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Citation Envoyé par aalex_38 Voir le message
    Vive l'indentation !!!!
    Ca c'est bien vrai, mais je crois que tu as fais une petite coquille, n'est-ce pas après le 'Next ws' qu'il faut le 'End if '?



    Sinon, une autre manière de voir...le If sur une ligne qui évite le 'End if'
    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
    Sub TriChaqueFeuille()
    Dim X As Variant
    Dim I As Variant
    Dim ws As Worksheets
    'Trier par ordre alphabétique toutes les feuilles (nominatives)de ce fichier
    'sauf la feuille "Récap" et les feuilles nommées numériques
     
    For Each X In ActiveWorkbook.Sheets
        For I = 2 To ActiveWorkbook.Sheets.Count
            For Each ws In Worksheets
                If ws.Name <> "Récap" And Not IsNumeric(Left(ws.Name, 2)) Then Resume Next
                    If Sheets(I - 1).Name > Sheets(I).Name Then Sheets(I - 1).Move After:=Sheets(I)
            Next ws
        Next I
    Next X
    End Sub
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Par défaut
    Merci beaucoup

    J’ai placé le Next If mais ce n’est pas mieux. Ensuite j’ai essayé avec le dernier code reçu mais toujours rien.

    De plus le total ne se fait pas automatiquement sur la dernière personne. Je ne sais pas pourquoi non plus.

    J’aimerais tellement « piger » tout ce qui est écrit. !!!

    A+
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Avec la feuille Récap en première position , le code que j'ai proposé fonctionne, j'ai fais le test sur ton fichier

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Par défaut
    Moi en pas à pas il me dit Erreur de compilation : procédure attendue, et non un variable.

    De plus il y avait une erreur dans le nom du bouton trier, j'avais un "S" en trop

    Je cherche toujours

    Merci

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    Dim K As Boolean
    Dim I As Integer
     
    K = True
    Do While K
        K = False
        For I = 1 To ActiveWorkbook.Sheets.Count - 1
            If Sheets(I).Name <> "Récap" And Not IsNumeric(Left(Sheets(I).Name, 2)) Then
                If Sheets(I).Name > Sheets(I + 1).Name Then
                    Sheets(I).Move After:=Sheets(I + 1)
                    K = True
                End If
            End If
        Next I
    Loop
    je ferai ceci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Classer les mots d'un fichier par ordre alphabétique
    Par juju742 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 10/05/2015, 21h28
  2. [DATA] Classer les variables par ordre alphabétique dans une table
    Par alers dans le forum SAS Base
    Réponses: 5
    Dernier message: 11/03/2015, 14h40
  3. [XL-2010] Exécuter une macro seulement dans les feuilles nommées par des nombres.
    Par baptou42 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2014, 16h40
  4. Classer des feuilles Excel par ordre alphabétique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/03/2013, 19h13
  5. Classer les procédures par ordre alphabétique
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/02/2007, 21h22

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