[ Résolu ] Trier mes onglets dans ordre bien précis.

al1.2loin

XLDnaute Occasionnel
Bonjour, je n'ai pas trouvé la réponse dans le forum, car je ne sais pas comment formuler ma question.
Voici ce que je voudrais obtenir,
j'ai un classeur contenant 300 feuilles, repartis un peu dans un ordre quelconque,
je voudrais les trier de sorte cela me donne :
lundi_7_sup
mardi_7_sup
mercredi_7_sup
jeudi_7_sup
vendredi_7_sup
samedi_7_sup
dimanche_7_sup
La j'ai ma semaine de trier avec 7 sup.
ensuite comme ceci :
lundi_8_sup
mardi_8_sup
mercredi_8_sup
jeudi_8_sup
vendredi_8_sup
samedi_8_sup
dimanche_8_sup
et ainsi de suite jusqu'a 12_sup
ci joint un fichier d' exemple car le mien est trop volumineux.
 

Pièces jointes

  • Trier_Onglets.xlsm
    17.3 KB · Affichages: 25
  • Trier_Onglets.xlsm
    17.3 KB · Affichages: 27
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Trier mes onglets dans ordre bien précis.

Bonjour,

http://boisgontierjacques.free.fr/fichiers/Tri/TriOngletsOrdre.xls

Code:
Sub essai2()
  a = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet")
  For i = 0 To UBound(a)
    On Error Resume Next
    Sheets(CStr(a(i))).Move before:=Sheets(i + 2)
  Next i
End Sub

ou si la liste est en colonne A

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

JB
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Bonjour à tous,

Ne correspond pas exactement à la demande mais s'en rapproche...
Un code de Daniel MAHER.

A+ à tous
 

Pièces jointes

  • Trier_Onglets.xlsm
    56.7 KB · Affichages: 33
  • Trier_Onglets.xlsm
    56.7 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Bonjour.

À l'aide de mes modules de service. (À quoi bon développer quelque chose de plus compliqué qui ne les utiliserait pas ?)
 

Pièces jointes

  • GrpOrgaAl1.2loin.xlsm
    79.2 KB · Affichages: 40

Dranreb

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Remarque: la procédure qui n'utiliserait que le module de classe TableIndex ne serait pas énormément plus compliquée. Le début serait pareil.
VB:
Sub test2()
Dim J&, NJ As New Dictionary, T(), F As Object, L&, S$(), N&
For J = 1 To 7: NJ(UCase(Format(DateSerial(1900, 1, J), "dddd"))) = J: Next J
ReDim T(1 To ThisWorkbook.Sheets.Count, 1 To 3)
For Each F In ThisWorkbook.Sheets
   L = L + 1: S = Split(F.Name, "_")
   On Error Resume Next: T(L, 1) = Val(S(1)): On Error GoTo 0
   If NJ.Exists(S(0)) Then T(L, 2) = NJ(S(0))
   T(L, 3) = F.Name: Next F
With New TableIndex
   .Init 1, UBound(T, 1)
   While .Actif
      If T(.B, 1) = T(.A, 1) Then .BInfA = T(.B, 2) < T(.A, 2) Else .BInfA = T(.B, 1) < T(.A, 1)
      Wend
   .Parcourir
   While .Actif
      L = .Suivant: N = N + 1
      ThisWorkbook.Sheets(T(L, 3)).Move Before:=ThisWorkbook.Sheets(N)
      Wend: End With
End Sub
Mais les deux feuilles nommées Feuil1 et Feuil2 se retrouvent au début au lieu de rester à la fin. Mais ça pourrait s'arranger en mettant une grande valeur dans T(L, 1) au lieu de le laisser vide. GroupOrg le fait tout seul.
 

al1.2loin

XLDnaute Occasionnel
Re : Trier mes onglets dans ordre bien précis.

Bonjour à vous tous, et merci de vous êtes penché sur ma question, mais étant pas un expert en VBA, je vais en rester la, j'ai quand même 300 feuilles à reclasser dans un ordre bien précis, si fallait que je reprenne l'exemple de JB il faudrait que j'inscrive le nom des 300 feuilles, c'est un peu compliqué pour moi.
 

Dranreb

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Si c'est à faire juste une fois pour des feuilles commençant à la semaine 7 et finissant à la 12, vous pouvez aussi vous contenter de cette simple procédure :
VB:
Sub Test4()
Dim S&, J&, P&
On Error Resume Next
For S = 7 To 12
   For J = 1 To 7
      P = P + 1
      ThisWorkbook.Sheets(UCase(Format(DateSerial(1900, 1, J), "dddd")) _
         & "_" & S & "_SUP").Move Before:=ThisWorkbook.Sheets(P)
      Next J, S
End Sub
 
Dernière édition:

al1.2loin

XLDnaute Occasionnel
Re : Trier mes onglets dans ordre bien précis.

Merci Dranreb de penser à moi, comme je le disait un peu plus haut, je ne suis pas fortiche en VBA, le code en question je le colle où.
J'ai essayé de le mettre dans ThisWorkbook ça ne marche pas .
Et de plus je n'avais pas donné toutes les explications, mes feuilles sont nommées ainsi:
lundi_7_sup_"3J_1B_3M"
mardi_7_sup_"3J_1B_3M"
mercredi_7_sup_"3J_1B_3M"
jeudi_7_sup_"3J_1B_3M"
vendredi_7_sup_"3J_1B_3M"
samedi_7_sup_"3J_1B_3M"
dimanche_7_sup_"3J_1B_3M"
La j'ai ma semaine de trier avec 7 sup.
ensuite comme ceci :
lundi_8_sup_"3J_2B_3M"
mardi_8_sup_"3J_2B_3M"
mercredi_8_sup_"3J_2B_3M"
jeudi_8_sup_"3J_2B_3M"
vendredi_8_sup_"3J_2B_3M"
samedi_8_sup_"3J_2B_3M"
dimanche_8_sup_"3J_2B_3M"
et ainsi de suite jusqu'a 12_sup
 

Dranreb

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Dans un module standard. Une procédure à lancer manuellement ou par une forme dessinée de formulaire ou par une commande personnalisée du ruban ne doit jamais être mise dans un module objet.
Mais il faut changer un peu:
VB:
Sub Test5()
Dim S&, J&, P&
On Error Resume Next
For S = 7 To 12
   For J = 1 To 7
      P = P + 1
      ThisWorkbook.Sheets(UCase(Format(DateSerial(1900, 1, J), "dddd")) _
         & "_" & S & "_SUP_3J_" & S - 6 & "B_3M").Move Before:=ThisWorkbook.Sheets(P)
      Next J, S
End Sub
Remarque: avec les solutions plus sophistiquées ce serait passé.

Non, je crois que je me suis trompé. J'ai corrigé le code.
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Trier mes onglets dans ordre bien précis.

Bonjour à tous

[Début hors sujet]Je souhaite du courage (et un PC ayant assez de mémoire) à ceux qui devront utiliser un classeur de 300 onglets avec des noms pareils (on ne voit que le début quand il y en a autant) !:rolleyes:[Fin hors sujet]
 

al1.2loin

XLDnaute Occasionnel
Re : Trier mes onglets dans ordre bien précis.

Bonjour, oui c'est vrai c'est un peu une usine à gaz mon truc, j’essaie de mettre tout les cas de figures que je pourrais avoir avec mes équipes de superviseurs, le lundi par exemple, j'ai un effectif de 7_Sup, dont 2_J (journée), 1_B ( binômes ), et 4_M ( matin ), je dois sortir la feuille en fonction des Vols qui seront présent ce jour, le lendemain Mardi, j'ai un effectif de 8_Sup , dont 2_J , 1_B , 4_M, la aussi je dois refaire ma feuille en fonction des vols du mardi, et ainsi de suite pour toute la semaine, et avec l'effectif présent, c'est pour cela que j'ai établis mes 300 feuilles remplis qui correspondent à la demande.
J'ai mis le sujet en Résolu, car je vais me débrouiller avec un affichage à la semaine en menu déroulant.
Merci encore à vous tous, ci joint un extrait de mes feuilles.
 

Pièces jointes

  • Classeur2_Test.xlsm
    70.3 KB · Affichages: 33

chris

XLDnaute Barbatruc
Re : [ Résolu ] Trier mes onglets dans ordre bien précis.

Bonjour

Merci du retour.

Tu crées chaque onglet manuellement ou bien les données de départ sont gérées dans une base de données ?

J'ai œuvré pas mal d'années dans le tourisme alors ton exemple me parle un petit peu ;)
 

al1.2loin

XLDnaute Occasionnel
Re : [ Résolu ] Trier mes onglets dans ordre bien précis.

Re, Chris , oui je crée chaque onglets , j'ai déjà un onglet avec toutes mes cellules de couleurs en fonction du choix du vol, et sont géré par un UserForm , qui s'affiche quand je clic sur une cellule bien précise de ma feuille, et je clic sur le vol que je dois faire apparaitre sur la cellule de la feuille, et çà répété plusieurs fois pour atteindre le choix de mes 300 feuilles.
Voici 2 copies écran pour mieux comprendre.
 

Pièces jointes

  • Userform.jpg
    Userform.jpg
    100.3 KB · Affichages: 36
  • Feuilles_Vols.gif
    Feuilles_Vols.gif
    72.7 KB · Affichages: 24
  • Userform.jpg
    Userform.jpg
    100.3 KB · Affichages: 31

al1.2loin

XLDnaute Occasionnel
Re : [ Résolu ] Trier mes onglets dans ordre bien précis.

Re

En quelques sorte oui, le listing des vols est est déjà définis pour une période allant jusqu'à 15 jours, et en fonctions du nombre d'effectif que j'ai, je n 'ai plus qu'a sortir ma feuille correspondante du jour.
 

Discussions similaires