Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tri des Onglets d'un Classeur

3 réponses
Avatar
Frédéric HAMEZ
Bonjour!

J'ai recuperé sur Excelabo la macro de Daniel Josserand qui effectue le tri
alphabetique des onglets d'une feuille :

Sub TriChaqueFeuille()
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

Elle fonctionne parfaitement, mais j'aimerai la modifier afin de pouvoir
effectuer un tri alphabétique à partir de la 4ème position de la chaine de
caractères constituant le nom de l'onglet.
En effet, ces noms d'onglet correspondent à un nom de ville précédé du
numéro du département
, par exemple : 62 ARRAS, 62 LENS, 59 LILLE, 59 VALENCIENNES

La macro non modifiée me permettra le tri par département, et celle modifiée
le tri sur le nom de la ville indépendamment du département.

Je suis malheureusement incapable de faire cette adaptation moi même!
D'avance merci.

Cordialement

Frédéric HAMEZ.

3 réponses

Avatar
papou
Bonjour
Dim X As Variant
Dim I As Variant
For Each X In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
If Mid(Sheets(I - 1).Name, 4, 1) > Mid(Sheets(I).Name, 4, 1) Then
Sheets(I - 1).Move After:=Sheets(I)
End If
Next
Next

Cordialement
Pascal
"Frédéric HAMEZ" a écrit dans le message de news:
4616534b$0$28887$
Bonjour!

J'ai recuperé sur Excelabo la macro de Daniel Josserand qui effectue le
tri alphabetique des onglets d'une feuille :

Sub TriChaqueFeuille()
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

Elle fonctionne parfaitement, mais j'aimerai la modifier afin de pouvoir
effectuer un tri alphabétique à partir de la 4ème position de la chaine de
caractères constituant le nom de l'onglet.
En effet, ces noms d'onglet correspondent à un nom de ville précédé du
numéro du département
, par exemple : 62 ARRAS, 62 LENS, 59 LILLE, 59 VALENCIENNES

La macro non modifiée me permettra le tri par département, et celle
modifiée le tri sur le nom de la ville indépendamment du département.

Je suis malheureusement incapable de faire cette adaptation moi même!
D'avance merci.

Cordialement

Frédéric HAMEZ.




Avatar
isabelle
bonjour Frédéric,

Dim X As Variant
Dim I As Variant
For Each X In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
x1 = Right(Sheets(I - 1).Name, Len(Sheets(I - 1).Name) - 3)
x2 = Right(Sheets(I).Name, Len(Sheets(I).Name) - 3)
If x1 > x2 Then
Sheets(I - 1).Move After:=Sheets(I)
End If
Next
Next

isabelle


Bonjour!

J'ai recuperé sur Excelabo la macro de Daniel Josserand qui effectue le tri
alphabetique des onglets d'une feuille :

Sub TriChaqueFeuille()
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

Elle fonctionne parfaitement, mais j'aimerai la modifier afin de pouvoir
effectuer un tri alphabétique à partir de la 4ème position de la chaine de
caractères constituant le nom de l'onglet.
En effet, ces noms d'onglet correspondent à un nom de ville précédé du
numéro du département
, par exemple : 62 ARRAS, 62 LENS, 59 LILLE, 59 VALENCIENNES

La macro non modifiée me permettra le tri par département, et celle modifiée
le tri sur le nom de la ville indépendamment du département.

Je suis malheureusement incapable de faire cette adaptation moi même!
D'avance merci.

Cordialement

Frédéric HAMEZ.




Avatar
Frédéric HAMEZ
Re-Bonjour,

Je crois deviner que par rapport à la solution de Papou, la votre trie sur
l'integralité du nom de la ville, alors que celle de Papou ne le fait que
sur la 1ère lettre?

Merci en tous cas infiniment à vous deux pour ces reponses aussi rapides.

Cordialement

Frédéric HAMEZ


isabelle wrote:
bonjour Frédéric,

Dim X As Variant
Dim I As Variant
For Each X In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
x1 = Right(Sheets(I - 1).Name, Len(Sheets(I - 1).Name) - 3)
x2 = Right(Sheets(I).Name, Len(Sheets(I).Name) - 3)
If x1 > x2 Then
Sheets(I - 1).Move After:=Sheets(I)
End If
Next
Next

isabelle