OVH Cloud OVH Cloud

Tri des onglets sauf certaines

8 réponses
Avatar
Crel
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par ordre
alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les onglets,
sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième ;
et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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

8 réponses

Avatar
Philippe.R
Bonsoir Patrick,
Pour les deux premiers, cette petite modification devrait convenir :

Private Sub Workbook_Open()
Dim X As Variant
Dim I As Variant
For Each X In ActiveWorkbook.Sheets
For I = 4 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


Pour celui qui est "au milieu", c'est nettement moins évident à mes yeux fatigués ;o))
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Crel" a écrit dans le message de
news:%
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par ordre
alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les onglets,
sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième ;
et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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




Avatar
AV
Sub zz_Tri()
With ActiveWorkbook
mémo = .Sheets("Charly").Index
For Each x In .Sheets
For I = 4 To .Sheets.Count
If .Sheets(I - 1).Name > .Sheets(I).Name Then _
.Sheets(I - 1).Move After:=.Sheets(I)
Next
Next
.Sheets("Charly").Move After:=.Sheets(mémo)
End With
End Sub

AV

"Crel" a écrit dans le message news:
#
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par ordre
alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les onglets,
sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième ;
et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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




Avatar
Paul V.
Salut AV,

Ote-moi d'un doute.
Si je ne me trompe, ta proc. positionne "Charly" une position plus loin
qu'au départ.
Suis-je dans l'erreur?

Je pense qu'il faudrait en ligne 3:
mémo = .Sheets("Charly").Index -1

ou alors coriger la ligne 10

A+

Paul V

"AV" a écrit dans le message de
news:
Sub zz_Tri()
With ActiveWorkbook
mémo = .Sheets("Charly").Index
For Each x In .Sheets
For I = 4 To .Sheets.Count
If .Sheets(I - 1).Name > .Sheets(I).Name Then _
.Sheets(I - 1).Move After:=.Sheets(I)
Next
Next
.Sheets("Charly").Move After:=.Sheets(mémo)
End With
End Sub

AV

"Crel" a écrit dans le message news:
#
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par
ordre


alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les
onglets,


sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième
;


et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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








Avatar
AV
Je pense qu'il faudrait en ligne 3:
mémo = .Sheets("Charly").Index -1


Absolument il faut le -1 !
Je l'avais mis, c'est sur, mais va savoir pourquoi il y est plus ...?

AV

Avatar
Paul V.
La loi de Murphy a encore frappé ;-)

Paul V.


"AV" a écrit dans le message de
news:OafQl%
Je pense qu'il faudrait en ligne 3:
mémo = .Sheets("Charly").Index -1


Absolument il faut le -1 !
Je l'avais mis, c'est sur, mais va savoir pourquoi il y est plus ...?

AV





Avatar
Crel
Merci beaucoup Philippe toujours très sympa.
Patrick.

"Philippe.R" a écrit dans le message de news:

Bonsoir Patrick,
Pour les deux premiers, cette petite modification devrait convenir :

Private Sub Workbook_Open()
Dim X As Variant
Dim I As Variant
For Each X In ActiveWorkbook.Sheets
For I = 4 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


Pour celui qui est "au milieu", c'est nettement moins évident à mes yeux
fatigués ;o))

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Crel" a écrit dans le message de
news:%
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par
ordre


alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les
onglets,


sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième
;


et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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








Avatar
Crel
Mille merci Paul V, cela fonctionne parfaitement.
Pour une proc non testé !!!
Patrick.

"Paul V." a écrit dans le message de news:
3f259c4d$0$286$
Bonjour,

Un truc (non teste) comme ce qui suit devrait t'aider.
J'ai positionné Alpha en un, bravo en deux et charly plus ou moins au
milieu

;-)
A toi d'adapter ou de revenir ici si c'est pas tout à fait ce que tu
voudrais.


Private Sub Workbook_Open()
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
Worksheets("bravo").Move before:=Sheets(1)
Worksheets("alpha").Move before:=Sheets(1)
I = Int(ActiveWorkbook.Sheets.Count / 2) + 1
Worksheets("charly").Move before:=Sheets(I)
End Sub

HTH

Paul V

"Crel" a écrit dans le message de
news:%
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par
ordre


alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les
onglets,


sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième
;


et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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








Avatar
Crel
Merci beaucoup AV, je ne sais comment vous remercier, c'est très sympa.
Encore merci.
Patrick.

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

Sub zz_Tri()
With ActiveWorkbook
mémo = .Sheets("Charly").Index
For Each x In .Sheets
For I = 4 To .Sheets.Count
If .Sheets(I - 1).Name > .Sheets(I).Name Then _
.Sheets(I - 1).Move After:=.Sheets(I)
Next
Next
.Sheets("Charly").Move After:=.Sheets(mémo)
End With
End Sub

AV

"Crel" a écrit dans le message news:
#
Bonjour à toutes et tous.
J'ai récuperé sur Excelabo.net cette proc qui me tri les onglet par
ordre


alpha.
Elle fonctionne très bien, mais je souhaite qu'elle trie tous les
onglets,


sauf les onglets "alpha" qui est en premier; "bravo" qui est en deuxième
;


et "Charly" qui se trouve au milieu.
Merci beaucoup.
Patrick.

Private Sub Workbook_Open()
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