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 :

Ordonner les feuilles d'un classeur Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Points : 51
    Points
    51
    Par défaut Ordonner les feuilles d'un classeur Excel
    Bonsoir,
    j'ai un classeur excel qui contient une quarantaine de feuilles, mon soucis c'est que les feuilles sont tout le temps désordonnées et dans ma présentation je doit respecter un ordre bien défini (feuilleA, feuille B, feuilleC ...). j'aimerai avoir une macro qui me le fait automatiquement.
    Est ce que vous avez une idée du code qui me permet d'avoir ce macro?
    Merci d'avance

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonsoir,

    et c'est quoi cet ordre défini ? l'ordre alphabétique ?

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Points : 51
    Points
    51
    Par défaut
    non ce n'est pas par ordre aphabetique. je veux par exemple que la feuille "ventes" soit après la feuille "achats de matières premières" qui elle sera après la feuille "salaire" ainsi de suite

  4. #4
    Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Points : 48
    Points
    48
    Par défaut BONSOIR /BONJOUR
    Voici une éventuelle solution, exemple avec un fichier contenant trois feuilles : TITI, TOTO, TATA. Dans cette solution, le choix est de définir un tableau en code VBA qui indique la hiérarchie souhaitée (des feuilles) mais vous pouvez aussi faire un listing dans une feuille excel cela pourrait être plus pratique et ainsi le Max pourrait être dynamique ... alors qu'ici il est dcl en const public, voici le code du tablo et de la const
    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
     
    Public Const Max As Integer = 3
     
    Public Function Tab_Organiser()
        'DCL UN TABLO DYNAMIQUE
        ReDim Tablo(1 To Max) As String
     
        Tablo(1) = "TITI"
        Tablo(2) = "TOTO"
        Tablo(3) = "TATA"
     
        'DCL UN VARIANT POUR PASSER LE TABLO DYNAMIQUE
        Dim MyTABLO As Variant
        MyTABLO = Tablo()
     
        'RETOUR DE LA FONCTION
        Tab_Organiser = MyTABLO
     
    End Function
    Voici le code appelant pour classer les feuilles

    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
     
    Public Sub Test()
    Dim i As Integer
    Dim ws As Worksheet
     
        For Each ws In Worksheets
            For i = 1 To Max
                If ws.Name = Tab_Organiser(i) Then
                    ws.Move Before:=Sheets(i)
                End If
            Next i
        Next ws
     
    Set ws = Nothing
     
    End Sub
    En espérant que cela corresponde aux attentes, cordialement.

  5. #5
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Points : 51
    Points
    51
    Par défaut
    ah c14 merci beaucoup cela me convient vraiment. je suis très content de cette merveilleuse aide.
    Et si je voulais lister les noms des feuilles d'une autre feuilles excel? comme vous l'avez ci bien dit cela est très interessant car ça pourra me permettre de changer les noms sans toucher au code. vous aurez un code pour ça aussi?
    Merci encore c14

  6. #6
    Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Points : 48
    Points
    48
    Par défaut RE
    voici une solution avec les hypothèses suivantes :
    • la feuille LISTE contient les noms des feuilles
    • la feuille LISTE est organisée avec en colonne A les NUM des feuilles et en colonne B le nom des feuilles
    • Le nom de la feuille LISTE figure dans le tableau en Premier ou dernier ...


    Une fonction remplace le Max dcl en constante

    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
    23
    24
    25
     
    Public Function COMBIEN_DE_FEUIL()
    Dim ws As Worksheet: Set ws = Application.Sheets("LISTE")
    COMBIEN_DE_FEUIL = (ws.Range("A" & Rows.Count).End(xlUp).Row) - 1  'du fait de l'en tête de colonne
    Set ws = Nothing
    End Function
     
    Public Sub test()
    Dim Max As Integer: Max = COMBIEN_DE_FEUIL
    Dim i As Integer
    Dim ws As Worksheet
    Dim wsList As Worksheet: Set wsList = Application.Sheets("LISTE")
     
        For Each ws In Worksheets
            For i = 2 To Max + 1 'pour parcourir la liste on démarre en ligne 2 et l'on doit rajouter 1 à Max !
                If ws.Name = wsList.Cells(i, 2).Value Then
                    ws.Move Before:=Sheets(i - 1) 'Neutralisation de la décision de démarrer i à 2 dans le cas des feuilles
                End If
            Next i
        Next ws
     
    Set ws = Nothing
    Set wsList = Nothing
     
    End Sub
    Cordialement

  7. #7
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Points : 51
    Points
    51
    Par défaut
    encore merciiii C14. tout est bien réglé

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

Discussions similaires

  1. [SSIS 2K8] Parcourir les feuilles d'un classeur Excel
    Par patriceharel dans le forum SSIS
    Réponses: 3
    Dernier message: 10/02/2009, 16h34
  2. Réponses: 2
    Dernier message: 06/05/2008, 16h05
  3. Comment parcourir toutes les feuilles d'un classeur excel?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2007, 20h47
  4. [VBA]activer les feuilles d'un classeur Excel
    Par jemigo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/01/2006, 17h58
  5. [VBA-E] Ordonner les feuilles d'un classeur
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2005, 16h49

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