OVH Cloud OVH Cloud

Tri

2 réponses
Avatar
RV
Bonsoir,
Je cherche à faire un tri sur le nom de mes onglets qui se nomment comme
suit:

Janvier 2007, Février 2007, Mars 2007, etc....jusque Décembre 2007

J' ai commencé ma macro comme cela en guise de test:

Dim ordre(12) as string

ordre(1)="Janvier 2007"
ordre(2)="Février 2007"
....
...
ordre(12)="Décembre 2007"

on error resume next
for x=1 to 12
for i=1 to 12
if sheets(x).name=ordre(i) then sheets(x).move before:=sheets(i+1)
next i
next x

Cela fonctionne mais pas du 1er coup.
L'objectif est de faire dans un 1er temps un tri sur l'année (2006, 2007,
2008 etc..) puis dans un 2ème temps sur le mois de l'année.
Je ne m'en sors pas, pourriez-vous m'aider ?
Merci et bonne soirée
RV

2 réponses

Avatar
JB
On 30 jan, 21:23, "RV" wrote:
Bonsoir,
Je cherche à faire un tri sur le nom de mes onglets qui se nomment comme
suit:

Janvier 2007, Février 2007, Mars 2007, etc....jusque Décembre 2007

J' ai commencé ma macro comme cela en guise de test:

Dim ordre(12) as string

ordre(1)="Janvier 2007"
ordre(2)="Février 2007"
....
...
ordre(12)="Décembre 2007"

on error resume next
for x=1 to 12
for i=1 to 12
if sheets(x).name=ordre(i) then sheets(x).move before:=sheets (i+1)
next i
next x

Cela fonctionne mais pas du 1er coup.
L'objectif est de faire dans un 1er temps un tri sur l'année (2006, 200 7,
2008 etc..) puis dans un 2ème temps sur le mois de l'année.
Je ne m'en sors pas, pourriez-vous m'aider ?
Merci et bonne soirée
RV
Bonsoir,


Sur la feuille 1 (page d'accueil), à partir de A2, les feuilles dans
l'ordre attendu:

Janvier
Février
Mars
....

Sub essai()
a = Sheets(1).Range([A2], [A65000].End(xlUp))
For i = 1 To UBound(a)
f = a(i, 1)
On Error Resume Next
Sheets(f).Move before:=Sheets(i + 1)
Next i
End Sub

http://cjoint.com/?bEvYWNOO6A

JB

Avatar
RV
Bonsoir JB,
Ok, j'ai récupéré le fichier.
Merci pour la solution.
Bonne soirée.
RV

"JB" a écrit dans le message de news:

On 30 jan, 21:23, "RV" wrote:
Bonsoir,
Je cherche à faire un tri sur le nom de mes onglets qui se nomment comme
suit:

Janvier 2007, Février 2007, Mars 2007, etc....jusque Décembre 2007

J' ai commencé ma macro comme cela en guise de test:

Dim ordre(12) as string

ordre(1)="Janvier 2007"
ordre(2)="Février 2007"
....
...
ordre(12)="Décembre 2007"

on error resume next
for x=1 to 12
for i=1 to 12
if sheets(x).name=ordre(i) then sheets(x).move before:=sheets(i+1)
next i
next x

Cela fonctionne mais pas du 1er coup.
L'objectif est de faire dans un 1er temps un tri sur l'année (2006, 2007,
2008 etc..) puis dans un 2ème temps sur le mois de l'année.
Je ne m'en sors pas, pourriez-vous m'aider ?
Merci et bonne soirée
RV
Bonsoir,


Sur la feuille 1 (page d'accueil), à partir de A2, les feuilles dans
l'ordre attendu:

Janvier
Février
Mars
....

Sub essai()
a = Sheets(1).Range([A2], [A65000].End(xlUp))
For i = 1 To UBound(a)
f = a(i, 1)
On Error Resume Next
Sheets(f).Move before:=Sheets(i + 1)
Next i
End Sub

http://cjoint.com/?bEvYWNOO6A

JB