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 :

Trier les onglets d'une couleur précise [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Par défaut Trier les onglets d'une couleur précise
    Bonjour,

    Je souhaiterai trier les onglets des pages qui sont d'une couleur jaune pâle (couleur 36) par ordre alphabétique en sachant que ces onglets jaunes doivent se trouver après les onglets ayant une autre couleur:

    J'ai testé ce code qui fonctionne mais dès que je rajoute la condition de la couleur ça veut plus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub tri_onglet()
        Dim i As Integer, j As Integer, num As Integer, nom As String
     
        For i = 2 To Sheets.Count
            num = 0: nom = Sheets(i).Name
            For j = i - 1 To 1 Step -1
                If Sheets.Tab.ColorIndex = 36 Then
                If Sheets(i).Name < Sheets(j).Name Then num = j
            Next j
            If num > 0 Then Sheets(i).Move before:=Sheets(num)
        Next i
    End If
    End Sub
    Merci.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    re,
    la je les mets tous a la fin, il te suffit de trier apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub tri_onglet()
        Dim ongl As Worksheet
        For Each ongl In Worksheets
         If ongl.Tab.ColorIndex = 36 Then
          ongl.Move After:=Sheets(Sheets.Count)
         End If
         Next ongl
     
    End Sub
    J'ai un code mais attention aux noms d'onglet

    si tu les appelles feuil1, feuil2 etc, la feuil10 passera avant la feuil2, logique c'est du texte, sinon voici une proposition, en ayant pris soin de mettre
    en haut du module

    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
    option compare text
    Sub tri_onglet()
    Dim i As Integer, x As Integer
    Dim ongl As Worksheet
          For Each ongl In Worksheets
             If ongl.Tab.ColorIndex = 36 Then
                ongl.Move after:=Sheets(Sheets.Count)
             End If
          Next ongl
          For i = 1 To Sheets.Count
             If Sheets(i).Tab.ColorIndex = 36 Then Exit For
          Next i
          For x = Sheets.Count To i + 1 Step -1
             If Sheets(x).Name < Sheets(x - 1).Name Then
                Sheets(x - 1).Move after:=Sheets(x)
             End If
          Next x
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    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
    Une proposition à l'aide de tableaux
    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
    Sub TriFeuilles()
    Dim Tabl() As String, Temp As String
    Dim ws As Worksheet
    Dim j As Byte, Variab As Byte
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        If ws.Tab.ColorIndex = 36 Then
            ReDim Preserve Tabl(j + 1)
            Tabl(j) = ws.Name
            j = j + 1
        End If
    Next ws
    Do              'Tri du tableau
        Variab = 0
        For j = 0 To UBound(Tabl) - 2
            If UCase(Tabl(j + 1)) < UCase(Tabl(j)) Then
                Temp = Tabl(j + 1)
                Tabl(j + 1) = Tabl(j)
                Tabl(j) = Temp
                Variab = 1
            End If
        Next j
    Loop While Variab = 1
    For j = 0 To UBound(Tabl) - 1
        Sheets(Tabl(j)).Move after:=Sheets(Sheets.Count)
    Next j
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Par défaut
    Bonjour,

    Merci pour vos propositions.

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

Discussions similaires

  1. Trier les éléments d'une CListCtrl
    Par hanane_iaai dans le forum MFC
    Réponses: 21
    Dernier message: 15/10/2007, 04h52
  2. Voir tout les onglets sur une même ligne
    Par bnreb10 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/08/2006, 11h08
  3. Trier les colonnes d'une zone de liste
    Par ancylia dans le forum Access
    Réponses: 8
    Dernier message: 24/10/2005, 14h08
  4. [VBA] Trier les colonnes d'une listview
    Par alncool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/09/2005, 14h12
  5. [VB.NET] Récupérer les caractéristiques d'une couleur
    Par leSeb dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/08/2004, 15h03

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