OVH Cloud OVH Cloud

classer les onglets par ordre alpha sauf 3

6 réponses
Avatar
S3com
bonjour voici mon code..

For m =3D 4 To Sheets.Count

Sheets(m).Select
Cells(4, 1).Value =3D Sheets(m).Name
For p =3D m To Sheets.Count
If UCase(Sheets(p).Name) < UCase(Sheets(m).Name) Then
Sheets(p).Move Sheets(m)
End If
Next p
Next m

au lieu de for m je voudrais qu'il classe toutes les feuilles sauf 3
dont les nom sont donn=E9s.
l'exception se fait je crois avec les elements each, <> mais je n'ai as
reussi

Merci de votre aide

6 réponses

Avatar
Jean-François Aubert
Salut,


'************************************************************************
Sub triDeCertainesFeuilles()
'* les feuilles triées seront placées en ordre croissant
'* dans les emplacements non occupés pas les feuilles non triées

'* liste des feuilles qui ne doivent pas être triées
'* à modifier selon besoin
nom1 = "Feuil1"
nom2 = "Feuil4"
nom3 = "Feuil3"
'nom4 'nom5 'etc..

'* mémorise l'emplacement des feuilles
'* qui ne doivent pas être triées
ReDim tbl(Sheets.Count)
For ish = 1 To Sheets.Count
Select Case Sheets(ish).Name
Case nom1
tbl(ish) = nom1
Case nom2
tbl(ish) = nom2
Case nom3
tbl(ish) = nom3
Case nom4
tbl(ish) = nom4
Case nom5
tbl(ish) = nom5
'etc...
End Select
Next

'* trie toutes les feuilles
For m = 1 To Sheets.Count
'Sheets(m).Select
'Cells(4, 1).Value = Sheets(m).Name
For p = m To Sheets.Count
If UCase(Sheets(p).Name) < UCase(Sheets(m).Name) Then
Sheets(p).Move Sheets(m)
End If
Next p
Next m

'* déplace en dernières positions les feuilles
'* qui ne doivent pas être triées
For itbl = 1 To UBound(tbl)
If Len(tbl(itbl)) > 1 Then Sheets(tbl(itbl)).Move
after:=Sheets(Sheets.Count)
Next

'* replace dans leur position d'origine les feuilles
'* qui ne doivent pas être triées
For itbl = 1 To UBound(tbl)
If Len(tbl(itbl)) > 0 Then
If itbl = 1 Then
Sheets(tbl(itbl)).Move before:=Sheets(itbl)
ElseIf itbl = UBound(tbl) Then
Sheets(tbl(itbl)).Move after:=Sheets(itbl)
Else
Sheets(tbl(itbl)).Move after:=Sheets(itbl - 1)
End If
End If
Next
End Sub ' ajf


'***********************************************************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


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

bonjour voici mon code..

For m = 4 To Sheets.Count

Sheets(m).Select
Cells(4, 1).Value = Sheets(m).Name
For p = m To Sheets.Count
If UCase(Sheets(p).Name) < UCase(Sheets(m).Name) Then
Sheets(p).Move Sheets(m)
End If
Next p
Next m

au lieu de for m je voudrais qu'il classe toutes les feuilles sauf 3
dont les nom sont donnés.
l'exception se fait je crois avec les elements each, <> mais je n'ai as
reussi

Merci de votre aide
Avatar
S3com
Merci de ton aide.

Je voudrais savoir si il est possible d'utiliser un nom de feuille
relatif tel que
name like "recap *".

Merci par avance
emeric
Avatar
michdenis
Bonjour S3com,

Tu peux faire un test comme celui là pour exclure par exemple de ton
classement, toutes les feuilles qui contiennent la chaîne de caractère : "recap"

'-------------------------
Sub test()

For Each sh In Worksheets
If InStr(1, sh.Name, "recap", vbTextCompare) = 0 Then
'ton code pour les déplacements

End If
Next

End Sub
'-------------------------


Salutations!


"S3com" a écrit dans le message de news:
Merci de ton aide.

Je voudrais savoir si il est possible d'utiliser un nom de feuille
relatif tel que
name like "recap *".

Merci par avance
emeric
Avatar
S3com
Bonjour et merci pour l'info!

Si je veux faire cette manip pour plusieurs nom de feuilles tel que
recap*, convocation*, acceuil*
puis je faire ainsi :

For Each sh In Worksheets
If InStr(1, sh.Name, "recap"&"convocation"&"acceuil"...,
vbTextCompare) = 0 Then
'ton code pour les déplacements

Merci par avance
Emeric
Avatar
michdenis
Ce que tu proposes est impossible.

Il est possible de répéter plus d'une fois ce type de condition
dans une boucle.


Salutations!




"S3com" a écrit dans le message de news:
Bonjour et merci pour l'info!

Si je veux faire cette manip pour plusieurs nom de feuilles tel que
recap*, convocation*, acceuil*
puis je faire ainsi :

For Each sh In Worksheets
If InStr(1, sh.Name, "recap"&"convocation"&"acceuil"...,
vbTextCompare) = 0 Then
'ton code pour les déplacements

Merci par avance
Emeric
Avatar
Patrick BASTARD
Bonjour, *S3com*

Une piste :
For Each Sh In ThisWorkbook.Sheets
If Sh.Name <> "recap" And Sh.Name <> "convocation" _
And Sh.Name <> "accueil" _
Then
toncode
End If
Next Sh

non testé.


--
Bien amicordialement,
P. Bastard


Bonjour et merci pour l'info!

Si je veux faire cette manip pour plusieurs nom de feuilles tel que
recap*, convocation*, acceuil*
puis je faire ainsi :

For Each sh In Worksheets
If InStr(1, sh.Name, "recap"&"convocation"&"acceuil"...,
vbTextCompare) = 0 Then
'ton code pour les déplacements

Merci par avance
Emeric