Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA excel trier les feuilles dans l'ordre

  • Initiateur de la discussion Initiateur de la discussion Anna_2013
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Anna_2013

Guest
Bonjour

Je souhaiterais développer la macro suivante : une fois que les feuilles ont été compilées dans le classeur je souhaiterais les classer par ordre croissant.
J'ai la macro suivante cependant les feuilles concernées commencent par le mot NOTE comme NOTE 0 ou NOTE 1.

Le nombre de feuilles est aléatoire.

Merci par avance pour votre aide

Sub TrierOnglets()

Dim Boucle As Integer, Compteur As Integer

For Boucle = 1 To Sheets.Count
If Sheets(Boucle).Visible = true then
For Compteur = 1 To (Boucle - 1)
If Sheets(Compteur).Visible = true then
If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
Sheets(Boucle).Move before:=Sheets(Compteur)
Exit For
End If
EndIf
Next Compteur
EndIf
Next Boucle
End Sub
 
Re : VBA excel trier les feuilles dans l'ordre

Bonjour,

j'ai essayé ce code cependant le lien pour changer le nom de la feuille ne fontionne plus.
La macro ne me permet pas de trier les feuilles du fichier excel.

Toutes les feuilles commencent par le mot NOTE et sont suivies d'un numéro avec ou sans espace du type : NOTE1 ou NOTE 0.

Merci par avance
 
Re : VBA excel trier les feuilles dans l'ordre

Bonjour Anna_2013

Salut DoubleZero

A tester:

Code:
Sub trifeuilles()
x = 1
num = CInt(Replace(Sheets(1).Name, "NOTE", ""))
While x < Sheets.Count + 1
 For n = x To Sheets.Count
   If CInt(Replace(Sheets(n).Name, "NOTE", "")) > num Then
     num = CInt(Replace(Sheets(n).Name, "NOTE", ""))
   End If
 Next
 Sheets("NOTE" & num).Move before:=Sheets(1)
 x = x + 1
num = 0
Wend
End Sub
 
Re : VBA excel trier les feuilles dans l'ordre

Bonjour
J'ai essayé cette syntaxe mais rien ne se passe quand je l'exécute.
Par ailleurs je ne parviens pas à classer les onglets NOTE 10 11 et 12 après l'onglet 9 car vba les considère comme des onglets 1

Merci par avance
 
Re : VBA excel trier les feuilles dans l'ordre

Bonjour à tous,

À tester :
VB:
Sub TriFeuilles()
   Dim i As Integer, j As Integer
   
   For i = 1 To Sheets.Count
      For j = i To Sheets.Count
         If Right("00000" & Split(Sheets(i).Name, " ")(1), 5) > Right("00000" & Split(Sheets(j).Name, " ")(1), 5) Then
            Sheets(j).Move before:=Sheets(i)
         End If
      Next j
   Next i
End Sub
 
Re : VBA excel trier les feuilles dans l'ordre

Le message suivant apparaît quand je lance cette macro l'indice n'appartient pas à la sélection.
Mes onglets sont nommés NOTE puis suivi d'un espace et d'un chiffre comme NOTE 1, NOTE 2 ect....
 
Re : VBA excel trier les feuilles dans l'ordre

j'utilise cette macro mais elle me met les onglets NOTE 11 et NOTE 12 entre les onglets NOTE 0 et NOTE 2. Je souhaiterai les mettres après l'onglet NOTE 9

Merci par avance

Sub TriChaqueFeuilles()
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
 
Re : VBA excel trier les feuilles dans l'ordre

Re

Il eut été bien de parler de cet espace depuis le debut !!!

A tester:

Code:
Sub trifeuilles()
x = 1
num = CInt(Replace(Sheets(1).Name, "NOTE ", ""))
While x < Sheets.Count + 1
 For n = x To Sheets.Count
   If CInt(Replace(Sheets(n).Name, "NOTE ", "")) > num Then
     num = CInt(Replace(Sheets(n).Name, "NOTE ", ""))
   End If
 Next
 Sheets("NOTE " & num).Move before:=Sheets(1)
 x = x + 1
num = 0
Wend
End Sub
 

Pièces jointes

Dernière édition:
Re : VBA excel trier les feuilles dans l'ordre

Je n'ai pas de message d'erreur quand je teste.
Néanmoins, voici le code avec une petite correction :

VB:
Sub TriFeuilles_AvecNumero()
   Dim i As Integer, j As Integer
   
   For i = 1 To Sheets.Count - 1
      For j = i + 1 To Sheets.Count
         If Right("00000" & Split(Sheets(i).Name, " ")(1), 5) > Right("00000" & Split(Sheets(j).Name, " ")(1), 5) Then
            Sheets(j).Move before:=Sheets(i)
         End If
      Next j
   Next i
End Sub

A+
 
Re : VBA excel trier les feuilles dans l'ordre

Bonjour

Le code utilisé ne fonctionne pas j'ai un message d'erreur indiquant une incompatibilité sur cette ligne
If CInt(Replace(Sheets(n).Name, "NOTE ", "")) > num Then

Merci pour votre aide

Sub trifeuilles()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
ChDrive ThisWorkbook.path: ChDir ThisWorkbook.path
FileName = Dir("*.xlsx", vbNormal)
X = 1
num = CInt(Replace(Sheets(1).Name, "NOTE ", ""))
While X < Sheets.Count + 1
For n = X To Sheets.Count
If CInt(Replace(Sheets(n).Name, "NOTE ", "")) > num Then
num = CInt(Replace(Sheets(n).Name, "NOTE ", ""))
End If
Next
Sheets("NOTE " & num).Move before:=Sheets(1)
X = X + 1
num = 0
Wend
End Sub
 
Re : VBA excel trier les feuilles dans l'ordre

et sinon j'ai une erreur à cette ligne

If Right("00000" & Split(Sheets(i).Name, " ")(1), 5) > Right("00000" & Split(Sheets(j).Name, " ")(1), 5) Then
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
784
Réponses
7
Affichages
454
Réponses
4
Affichages
732
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…