Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trier feuille (onglet du bas) par date

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guismau2002

XLDnaute Nouveau
Bonjour,

J'aurais besoin de trouver une macro qui me permet de ranger automatiquement plusieurs feuilles de classeurs par date (01/01/2007). En faite mon doc contient plusieurs feuilles sur un même classeur, mais elle sont toutes dans le désordre, j'aurais besoin de trouver un méthode pour qu'il puisse me les trier. En espèrant que quelqu'un trouvera une solution à mon Pb.
 
Re : Trier feuille (onglet du bas) par date

Bonsoir guismau,
Pour pouvoir faire le tri, il faut bien sûr que les noms des onglets soient des dates. Les / ne sont pas autorisés dans les noms d'onglets, vous pouvez par contre écrire 01-01-2007.
A moins de faire ce tri manuellement, il vous faut une macro VBA qui est très simple, voici son code :

Sub ClasserOnglets()
For i = 1 To 1000
For j = 2 To Sheets.Count
If DateValue(Sheets(j).Name) < DateValue(Sheets(j - 1).Name) Then
Sheets(j).Select
Sheets(j).Move Before:=Sheets(j - 1)
End If
Next
Next
End Sub

La procédure à suivre est la suivante :
- ouvrez VBA en faisant Alt+F11
- menu Insertion, cliquez sur Module
- copiez/collez le code de la macro dans le module
- retour au classeur
- pour exécuter la macro (Excel 2003), menu Outils-Macro-Macros... puis Exécuter. Sur Excel 2007, je pense que vous trouverez (il faut que l'onglet Développeurs soit affiché je crois). Vous pouvez aussi lancer la macro directement sur VBA par le menu Exécution.

Si vous aviez un très très grand nombre de feuilles, il faudrait exécuter plusieurs fois de suite la macro, voire remplacer le 1000 dans la macro par un nombre plus grand.

A+
 
Dernière édition:
Re : Trier feuille (onglet du bas) par date

Salut
Faire son choix et adapter au contexte, et pourquoi pas en suivant la norme ISO 8601
Ce site n'existe plus
Ce site n'existe plus
Ce site n'existe plus
Ce site n'existe plus
Ce site n'existe plus
Ce site n'existe plus
 
Re : Trier feuille (onglet du bas) par date

Merci pour votre réponse.
Je viens de faire un essai mais c’est sans succès.
J’ai oublié de préciser que j’avais déjà utilisé une macro pour faire ressortir les feuilles cachées.
Enfin au niveau des onglets, la date apparait de la marnière suivante : 010107
Est ce que le Pb pourrait venir delà ???
Merci encore pour votre aide.
Si besoin je peux laisser en message privé mon email pour envoyer mon doc (car il est trop lourd pour le forum).
 
Re : Trier feuille (onglet du bas) par date

Sub ClasserOnglets()
For i = 1 To 1000
For j = 2 To Sheets.Count
Annee = Right(Sheets(j).Name),2)
Annee2 = Right(Sheets(j - 1).Name),2)
Mois = Mid(Sheets(j).Name),2,2)
Mois2 = Mid(Sheets(j - 1).Name),2,2)
Jours = Left(Sheets(j).Name),2)
Jours = Left(Sheets(j - 1).Name),2)

If Annee < Annee2 And Mois < Mois2 And Jours < Jours2 Then
Sheets(j).Select
Sheets(j).Move Before:=Sheets(j - 1)
End If
Next
Next
End Sub

Ou bien

Sub ClasserOnglets()
DateActuel1 = Sheets(j).Name
DateActuel2 = Sheets(j - 1).Name
DateMod1 = Left(DateActuel1, 2) & "/" & Mid(DateActuel1, 2, 2) & "/" & Right(DateActuel1, 2)
DateMod2 = Left(DateActuel2, 2) & "/" & Mid(DateActuel2, 2, 2) & "/" & Right(DateActuel2, 2)

For i = 1 To 1000
For j = 2 To Sheets.Count
If DateValue(DateMod1) < DateValue(DateMod2) Then
Sheets(j).Select
Sheets(j).Move Before:=Sheets(j - 1)
End If
Next
Next
End Sub

Quelque-chose comme ça peut être 🙂
 
Dernière édition:
Re : Trier feuille (onglet du bas) par date

Malgré vos réponses, je n'y arrive toujours pas. J'ai fais une copié écran de ce que je souhaite faire.. en espèrant que cela vous aidera.



 

Pièces jointes

  • test.jpg
    142.2 KB · Affichages: 162
  • test.jpg
    142.2 KB · Affichages: 191
  • test.jpg
    142.2 KB · Affichages: 200
Re : Trier feuille (onglet du bas) par date

La macro que je vous ai présentée supposait que les noms des onglets étaient dans un format date qu'Excel peut comprendre. Cen'est pas le cas avec 010107. Testez donc les autres propositions qui transforment les noms dans un format compréhensible.
A+
 
Re : Trier feuille (onglet du bas) par date

Dans ce cas là comment je peux faire pour changer le format de mes onglets et les insérés dans un format daté. Il ya t'il une formule automatique ??
Ainsi je pourrais après rentrer la macro que vous m'avez proposé.
D'avance, merci

 
Re : Trier feuille (onglet du bas) par date

Si vous êtes sûr que tous vos onglets ont des noms du type 010107 (6 chiffres), utilisez la macro de Croftman.
Le problème c'est qu'elle n'est pas écrite correctement. La voici corrigée :

Sub ClasserOnglets()
For i = 1 To 1000
For j = 2 To Sheets.Count
DateActuel1 = Sheets(j).Name
DateActuel2 = Sheets(j - 1).Name
DateMod1 = Left(DateActuel1, 2) & "/" & Mid(DateActuel1, 3, 2) & "/" & Right(DateActuel1, 2)
DateMod2 = Left(DateActuel2, 2) & "/" & Mid(DateActuel2, 3, 2) & "/" & Right(DateActuel2, 2)
If DateValue(DateMod1) < DateValue(DateMod2) Then
Sheets(j).Move Before:=Sheets(j - 1)
End If
Next
Next
End Sub

Enfin il n'y a aucune "formule" pour modifier le nom des onglets. Il faut le faire manuellement ou à l'aide d'une macro.

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
731
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…