Tri des Onglets d'un Classeur

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
papou
Le #4398461
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" 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.




isabelle
Le #4398451
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.




Frédéric HAMEZ
Le #4398321
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


Publicité
Poster une réponse
Anonyme