Comment classer les onglets d'un classeur suivant un ordre précis?

Paritec

XLDnaute Barbatruc
Bonjour a tous
j'aimerais savoir comment classer les onglets dans un classeur, explications dans la fichier joint
dans l'attente de vos réponses
a+
Papou :)
 

Pièces jointes

  • Classement d'onglets.xls
    32 KB · Affichages: 211

tactic6

XLDnaute Impliqué
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Bonjour
Je n'ai surement pas ta réponse mais voici un code qui range les onglets par ordre croissant
il faudrait y ajouter une exclusion des trois premier puisque le reste doit être classé
enfin si ça peut t'aider
Code:
Sub onglet_Papou()
On Error Resume Next
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Sheets(J)
Exit For
End If
Next J
Next I
End Sub

Edit
une astuce que j'utilise un blanc devant le nom de ceux que je veux laisser en tête
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Re Tactic le forum,
presque bon mais il se peut aussi que j'ai d'autre ajouts entre Récap et Pm et là ????,
en tout cas avec des blancs devant les trois a pas toucher cela marche, c'est déjà un grand progrès.
a voir si on peut améliorer pour avoir tout OK
a+
bon dimanche
Papou:)
 

Paritec

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur en commencant après la feuille PM?

Bonjour a tous j'ai modifié le titre du post pour être plus précis
dans l'attente de vos propositions
bonne journée
Papou:)

EDIT : Fichier joint en post 1
 

tactic6

XLDnaute Impliqué
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Re Papou et le forum
Essaie ceci
ça fonctionne mais tu devras rajouter une ligne de code a chaque onglet que tu voudras "figer"
en attendant mieux
Code:
Sub onglet_Papou()
On Error Resume Next

Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Sheets(J)
Exit For
End If

Next J
Next I
Sheets("PM").Select
Sheets("PM").Move Before:=Worksheets("P1")
Sheets("Récap").Select
Sheets("Récap").Move Before:=Worksheets("PM")
End Sub
EDIT

Je sais pas pourquoi mais j'ai mis P99 donc je remodifie
 
Dernière édition:

tactic6

XLDnaute Impliqué
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Ecrit different
Code:
Sub onglet_Papou()
On Error Resume Next

Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Sheets(J)
Exit For
End If

Next J
Next I
With Sheets("PM")
.Select
.Move Before:=Worksheets("P1")
With Sheets("Récap")
.Select
.Move Before:=Worksheets("PM")
End With
End With
End Sub
 

Paritec

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Re Tactic,
non c'était parfait avec le P99 devant PM, alors là c'est presque bon sauf que si tu ajoutes des feuilles au delà de 10 tu obtiens P1 P10 P12 P2 P3 P4
encore un point a contourner.!!!!
Pour les lignes à ajouter pour reclasser les trois ou 4 feuilles c'est pas un souci.
par contre Tactic les .select tu peux les retirer cela marche tout aussi bien
a+
papou:)
 

tactic6

XLDnaute Impliqué
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Ok
je ne suis qu'un debutant et j'ai du mal à me souvenir de .select qui servent a rien sauf à créer des pb

Par contre je ne suis pas sur qu'excel comprenne que P2<P140000
 

Paritec

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Bonjour Tactic le forum
bon alors en partant de ton idée et en renommant toutes mes feuilles de 1 à 10 01 02 03 etc cela marche très bien alors c'est déjà trés bien si maintenant on peut éviter le déplacement des feuilles Récap P99 et Pm ce serait un plus surtout si je viens a ajouter une feuille entre Récap et PM
voilà ce que j'ai retenu pour l'instant
Code:
Sub onglet_Papou()
    Dim I As Integer, J As Integer
    For I = 1 To Sheets.Count
        For J = 1 To I - 1
            If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
                Sheets(I).Move Sheets(J)
                Exit For
            End If
        Next J
    Next I
    Sheets("PM").Move Before:=Worksheets("P01")
    Sheets("P99").Move Before:=Worksheets("PM")
    Sheets("Récap").Move Before:=Worksheets("P99")
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

bonjour a tous

Ma version:

Code:
Sub classe()
For n = 1 To Sheets.Count
 For m = n + 1 To Sheets.Count
   If Sheets(m).Name < Sheets(n).Name Then
      Sheets(m).Move before:=Sheets(n)
   End If
 Next m
Next n
Sheets("PM").Move before:=Sheets(1)
Sheets("P99").Move before:=Sheets(1)
Sheets("Récap").Move before:=Sheets(1)
End Sub
 

Paritec

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Bonjour PierreJean le forum,
merci pour ta version qui marche aussi très bien, mais aurais-tu une idée pour ne pas tenir compte des feuilles avant l'onglet PM sans avoir à déplacer les feuilles ?
En fait je peux ajouter des feuilles avant PM et dans ce cas il me faut rajouter une ligne pour déplacer
Code:
Sheets("Pxx").Move before:=Sheets(1)
si tu as une solution pour éviter cela?
bon dimanche
a+
papou:)
 

pierrejean

XLDnaute Barbatruc
Re : Comment classer les onglets d'un classeur suivant un ordre précis?

Re

Si tu es sur d'un bon classement jusqu'a la feuille PM teste:
Code:
 for n=1 to sheets.count
 if sheets(n).name="PM" then
   pm=n
   exit for
end if
next n
 
For n = pm+1 To Sheets.Count
 For m = n + 1 To Sheets.Count
   If Sheets(m).Name < Sheets(n).Name Then
      Sheets(m).Move before:=Sheets(n)
   End If
 Next m
Next n
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 958
Membres
103 990
dernier inscrit
lamiadebz