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 !
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 !