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


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    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
    Par défaut Ordonner les feuilles d'un classeur
    Bonjour,
    Je voudrais ordonner les onglets de mon fichier selon un ordre que j'ai bien défini. Mais en fait dans mon classeur il ya des onglets masqués ce qui empêche mon code de classer les feuilles comme je le veux. Je voudrais ordonner mes feuilles sans tenir compte de ces feuilles masqués ou bien démasquer les feuilles, les mettre à la fin et en fin les masquer pour permettre que les feuilles qui ne sont pas masquées soient ordonnées comme je le veux; Voici le code que j'ai
    Merci d'avance.
    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
    'liste contient les noms des feuilles
    '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
     
     
    Public Sub test()
    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
    Dim Max As Integer: Max = COMBIEN_DE_FEUIL
    Dim i As Integer
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Pasterlouis

    Un code un peu plus optimisé à tester
    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
    26
    27
    Public Sub test()
      ' Les variables sont à définir en début de Sub
      Dim Ws As Worksheet, WsList As Worksheet
      Dim LigT As Long  ' Ligne ou se situe le nom de la feuille
      '
      Set WsList = Sheets("liste")
      ' Pour chaque feuille
      For Each Ws In Worksheets
        ' Si la feuille est visible
        If Ws.Visible = xlSheetVisible And Ws.Name <> "liste" Then
          ' En cas d'erreur on continue
          On Error Resume Next
          LigT = 0  ' Initialiser à 0 le numéro de ligne trouvée
          ' Trouver le numéro de la ligne ou se trouve le nom de la feuille
          LigT = WsList.Range("A:A").Find(What:=Ws.Name, LookIn:=xlValues, LookAt:=xlWhole, _
              SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Row
          ' Si le numéro de ligne est trouvée
          If LigT <> 0 Then
            Ws.Move Before:=Sheets(LigT - 1)
          End If
          On Error GoTo 0
        End If
      Next Ws
      ' Effacer les variables objet
      Set Ws = Nothing
      Set WsList = Nothing
    End Sub
    A+

Discussions similaires

  1. [XL-2007] Ordonner les feuilles d'un classeur Excel
    Par pasterlouis dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/05/2013, 23h43
  2. 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
  3. [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
  4. Action sur toutes les feuilles d'un classeur
    Par beurnoir dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/12/2005, 15h11
  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