Trier des onglets : code VBA qui gèle mon ordi à cause du nombre d'onglets

  • Initiateur de la discussion Initiateur de la discussion SOYA
  • 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 !

SOYA

XLDnaute Occasionnel
Bonjour à tous,

Je suis bien embêtée... J'ai essayé les deux codes suivants, piqués sur le site de Boisgontiers.

Sub tri_ongletDirect()
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
For j = i To Sheets.Count
If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
Sheets(i).Move before:=Sheets(j)
Sheets(j).Move before:=Sheets(i)
End If
Next j
Next i
End Sub

***************
Sub tri_ongletDirect2()
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
For j = i To Sheets.Count
If IsNumeric(Sheets(j).Name) Then
x = String(30 - Len(Sheets(j).Name), "0") & Sheets(j).Name
Else
x = UCase(Sheets(j).Name)
End If
If IsNumeric(Sheets(i).Name) Then
y = String(30 - Len(Sheets(i).Name), "0") & Sheets(i).Name
Else
y = UCase(Sheets(i).Name)
End If
If x < y Then
Sheets(i).Move before:=Sheets(j)
Sheets(j).Move before:=Sheets(i)
End If
Next j
Next i
End Sub

Ils fonctionnent tous les deux très bien pour des petits fichiers (j'ai testé juqu'à 15 onglets).
Malheureusement, mon fichier a 100 onglets et quand je démarre la macro, ça plante... Gel complet d'Excel, ctrl+alt+delete, fin de tâche, Microsoft Excel ne répond pas, etc... J'ai même patienté 10 minutes, pensant que ça lui prenait probablement bien plus de temps, mais c'était toujours bloqué au bout de 10 minutes.

Avez-vous une solution ? Pour info, le nom de mes onglets est numérique (à 6 chiffres).

Merci beaucoup !
 
Re : Trier des onglets : code VBA qui gèle mon ordi à cause du nombre d'onglets

Bonsoir Soya,

Une methode pour trier les onglets par ordre alphabetique:

sub tri_onglets
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
j=i
For k = i+1 To Sheets.Count
If Sheets(j).Name) >Sheets(k).Name) Then j=k
next k
if j <> i then Sheets(j).Move sheets (i)
next i
Application.ScreenUpdating = True
End Sub

A essayer ?

A+
 
Re : Trier des onglets : code VBA qui gèle mon ordi à cause du nombre d'onglets

Bonjour Néné !

Merci pour votre temps. Je veux bien tester votre code mais Excel détecte un problème de syntaxe avec la phrase :

If Sheets(j).Name) >Sheets(k).Name) Then j=k

Et je ne saurais dire lequel... :/
 
Re : Trier des onglets : code VBA qui gèle mon ordi à cause du nombre d'onglets

Yahoo !!!! Ça marche ! Un petit gel au début mais je l'ai laissé rouler pendant 2 ou 3 minutes et hop ! Le tri était fait.

Affaire conclue et un GRAND MERCI Néné 🙂
 
- 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

Discussions similaires

Réponses
3
Affichages
672
  • Question Question
Microsoft 365 VBA Transpose
Réponses
11
Affichages
837
Réponses
3
Affichages
681
Réponses
3
Affichages
509
Réponses
5
Affichages
483
Retour