Trier certaines feuilles d'un classeur et pas les autres...
2 réponses
Excel...lent
Bonsoir la communauté,
Il ya quelques temps lorsque je sévissait sur ce forum avec le pseudo "
Excel...lent " j'avais demandé un coup de main pour trier des feuilles d'un
classeur contenant les 52 semaines d'une année. Chaque semaine était nommée
par un "S" + son numéro. Exemple la semaine 42 --> S42.
Un gentil contributeur dont j'ai oublié le nom ( qu'il veuille bien me
pardonner ) m'avait donné ce code :
ReDim tablo(0)
For Each s In ActiveWorkbook.Sheets
If Left(s.Name, 1) = "S" Then
ReDim Preserve tablo(UBound(tablo) + 1)
tablo(UBound(tablo)) = Val(Right(s.Name, Len(s.Name) - 1))
End If
Next
For I = 1 To UBound(tablo) - 1
a = WorksheetFunction.Large(tablo, I)
b = WorksheetFunction.Large(tablo, I + 1)
Sheets("S" & b).Move before:=Sheets("S" & a)
Next
End Sub
A l'époque je n'avais pas cherché à comprendre son fonctionnement, me
contentant de l'utiliser tout simplement.
Aujourd'hui je souhaiterais que ce tri s'effectue sur des feuilles qui se
nommeraient par l'année sur deux digit suivit du numéro de semaine comme
avant :
Exemple la semaine 42 de l'année 2007 serait nommée --> Y07-S42
Or le code ne fonctionne pas avec cette dénomination. Est-il possible de le
modifier ?
Et puis si quelqu'un a la patience et si cela n'est pas trop fastidieux pour
le contributeur je suis preneur d'une explication sur le code.
' Tri à bulle ascendant du tableau Liste() Dim Premier As Integer, Dernier As Integer Dim i As Integer, j As Integer Dim Temp
Premier = LBound(Liste) Dernier = UBound(Liste) For i = Premier To Dernier - 1 For j = i + 1 To Dernier If Liste(i) > Liste(j) Then Temp = Liste(j) Liste(j) = Liste(i) Liste(i) = Temp End If Next j Next i
' Déplacer les feuilles For i = UBound(Liste) - 1 To 1 Step -1 Sheets(Liste(i)).Move before:=Sheets(Liste(i + 1)) Next i
Mishell
"Excel...lent" wrote in message news:
Bonsoir la communauté,
Il ya quelques temps lorsque je sévissait sur ce forum avec le pseudo " Excel...lent " j'avais demandé un coup de main pour trier des feuilles d'un classeur contenant les 52 semaines d'une année. Chaque semaine était nommée par un "S" + son numéro. Exemple la semaine 42 --> S42.
Un gentil contributeur dont j'ai oublié le nom ( qu'il veuille bien me pardonner ) m'avait donné ce code :
ReDim tablo(0) For Each s In ActiveWorkbook.Sheets If Left(s.Name, 1) = "S" Then ReDim Preserve tablo(UBound(tablo) + 1) tablo(UBound(tablo)) = Val(Right(s.Name, Len(s.Name) - 1)) End If Next For I = 1 To UBound(tablo) - 1 a = WorksheetFunction.Large(tablo, I) b = WorksheetFunction.Large(tablo, I + 1) Sheets("S" & b).Move before:=Sheets("S" & a) Next End Sub
A l'époque je n'avais pas cherché à comprendre son fonctionnement, me contentant de l'utiliser tout simplement.
Aujourd'hui je souhaiterais que ce tri s'effectue sur des feuilles qui se nommeraient par l'année sur deux digit suivit du numéro de semaine comme avant : Exemple la semaine 42 de l'année 2007 serait nommée --> Y07-S42
Or le code ne fonctionne pas avec cette dénomination. Est-il possible de le modifier ?
Et puis si quelqu'un a la patience et si cela n'est pas trop fastidieux pour le contributeur je suis preneur d'une explication sur le code.
Merci beaucoup pour votre aide.
Cordialement.
Excel...lent
Bonjour.
Il te faut ici effectuer un tri du tableau Liste avant de pouvoir déplacer
les feuilles.
ReDim Liste(0)
'Mettre les noms des feuilles dans le tableau Liste()
For Each s In ActiveWorkbook.Sheets
' Tri à bulle ascendant du tableau Liste()
Dim Premier As Integer, Dernier As Integer
Dim i As Integer, j As Integer
Dim Temp
Premier = LBound(Liste)
Dernier = UBound(Liste)
For i = Premier To Dernier - 1
For j = i + 1 To Dernier
If Liste(i) > Liste(j) Then
Temp = Liste(j)
Liste(j) = Liste(i)
Liste(i) = Temp
End If
Next j
Next i
' Déplacer les feuilles
For i = UBound(Liste) - 1 To 1 Step -1
Sheets(Liste(i)).Move before:=Sheets(Liste(i + 1))
Next i
Mishell
"Excel...lent" <Excel...lent@discussions.microsoft.com> wrote in message
news:41C6F6B6-0526-4372-B1FF-7770A9CC32B5@microsoft.com...
Bonsoir la communauté,
Il ya quelques temps lorsque je sévissait sur ce forum avec le pseudo "
Excel...lent " j'avais demandé un coup de main pour trier des feuilles
d'un
classeur contenant les 52 semaines d'une année. Chaque semaine était
nommée
par un "S" + son numéro. Exemple la semaine 42 --> S42.
Un gentil contributeur dont j'ai oublié le nom ( qu'il veuille bien me
pardonner ) m'avait donné ce code :
ReDim tablo(0)
For Each s In ActiveWorkbook.Sheets
If Left(s.Name, 1) = "S" Then
ReDim Preserve tablo(UBound(tablo) + 1)
tablo(UBound(tablo)) = Val(Right(s.Name, Len(s.Name) - 1))
End If
Next
For I = 1 To UBound(tablo) - 1
a = WorksheetFunction.Large(tablo, I)
b = WorksheetFunction.Large(tablo, I + 1)
Sheets("S" & b).Move before:=Sheets("S" & a)
Next
End Sub
A l'époque je n'avais pas cherché à comprendre son fonctionnement, me
contentant de l'utiliser tout simplement.
Aujourd'hui je souhaiterais que ce tri s'effectue sur des feuilles qui se
nommeraient par l'année sur deux digit suivit du numéro de semaine comme
avant :
Exemple la semaine 42 de l'année 2007 serait nommée --> Y07-S42
Or le code ne fonctionne pas avec cette dénomination. Est-il possible de
le
modifier ?
Et puis si quelqu'un a la patience et si cela n'est pas trop fastidieux
pour
le contributeur je suis preneur d'une explication sur le code.
' Tri à bulle ascendant du tableau Liste() Dim Premier As Integer, Dernier As Integer Dim i As Integer, j As Integer Dim Temp
Premier = LBound(Liste) Dernier = UBound(Liste) For i = Premier To Dernier - 1 For j = i + 1 To Dernier If Liste(i) > Liste(j) Then Temp = Liste(j) Liste(j) = Liste(i) Liste(i) = Temp End If Next j Next i
' Déplacer les feuilles For i = UBound(Liste) - 1 To 1 Step -1 Sheets(Liste(i)).Move before:=Sheets(Liste(i + 1)) Next i
Mishell
"Excel...lent" wrote in message news:
Bonsoir la communauté,
Il ya quelques temps lorsque je sévissait sur ce forum avec le pseudo " Excel...lent " j'avais demandé un coup de main pour trier des feuilles d'un classeur contenant les 52 semaines d'une année. Chaque semaine était nommée par un "S" + son numéro. Exemple la semaine 42 --> S42.
Un gentil contributeur dont j'ai oublié le nom ( qu'il veuille bien me pardonner ) m'avait donné ce code :
ReDim tablo(0) For Each s In ActiveWorkbook.Sheets If Left(s.Name, 1) = "S" Then ReDim Preserve tablo(UBound(tablo) + 1) tablo(UBound(tablo)) = Val(Right(s.Name, Len(s.Name) - 1)) End If Next For I = 1 To UBound(tablo) - 1 a = WorksheetFunction.Large(tablo, I) b = WorksheetFunction.Large(tablo, I + 1) Sheets("S" & b).Move before:=Sheets("S" & a) Next End Sub
A l'époque je n'avais pas cherché à comprendre son fonctionnement, me contentant de l'utiliser tout simplement.
Aujourd'hui je souhaiterais que ce tri s'effectue sur des feuilles qui se nommeraient par l'année sur deux digit suivit du numéro de semaine comme avant : Exemple la semaine 42 de l'année 2007 serait nommée --> Y07-S42
Or le code ne fonctionne pas avec cette dénomination. Est-il possible de le modifier ?
Et puis si quelqu'un a la patience et si cela n'est pas trop fastidieux pour le contributeur je suis preneur d'une explication sur le code.
Merci beaucoup pour votre aide.
Cordialement.
Excel...lent
Excel...lent
Salut Mishell,
Je te prie de bien vouloir m'excuser pour ne pas avoir répondu plus tôt. En ce moment je bosse de nuit alors je suis un vrai "zombi".
Sinon ta proposition est exactement ce que je recherche. Je l'ai adapté à mon application et ça tourne au poil !
Merci de ton coup de main.
Cordialement.
Excel...lent
Salut Mishell,
Je te prie de bien vouloir m'excuser pour ne pas avoir répondu plus tôt. En
ce moment je bosse de nuit alors je suis un vrai "zombi".
Sinon ta proposition est exactement ce que je recherche. Je l'ai adapté à
mon application et ça tourne au poil !