Renommé onglet exemple: 311209 en 091231

  • Initiateur de la discussion Initiateur de la discussion CG2000
  • Date de début Date de début

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 !

CG2000

XLDnaute Occasionnel
Bonsoir le Forum,

Je me permets de vous solliciter car - après plusieurs tentatives infructueuses personnelles et après plusieurs recherches sur les différents fils du Forum - je demeure sans solution.
Mon sujet est le suivant :

Je récupère un fichier Excel qui possède plus de 500 onglets. Chaque onglet correspont a une date de ce format 311209 JourMoisAnnée est-il possible de transformer par macro chaque date des onglets de ce classeur dans le format suivant AnnéeMoisJour (Donc 091231 pour cet exemple et ce pour tous les onglets du classeur).

Par avance merci de votre aide.

CG2000
A+
 

Pièces jointes

Dernière édition:
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir CG2000,

Question philosophique et fondamentale, pourquoi changer la logique en un autre truc...????

Moi, je comprends bien jour/mois/année, dés que l'on mélange mon cerveau a du mal....

Jean-Pierre
 
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir à tous , bonsoir au fil,

Merci Jean marcel c'est presque le bon résultat, en fait je souhaite que que chaque jour de chaque année ce cumul et reste chronologique et numériquement par ordre. dans ton exemple nous avons MoisAnnéeJour et non AnnéeMoisJour.

Jean-Pierre en ce qui concerne ton interrogation :
"Question philosophique et fondamentale, pourquoi changer la logique en un autre truc...????
Moi, je comprends bien jour/mois/année, dés que l'on mélange mon cerveau a du mal...."

Lors d'un reclassement d'onglets par exemple de deux années pour cet exemple 2009 et 2010 si je ne cherche pas à transformer 010110 en 100101 avec l'ensemble des mois cela donne par exemple 010109 010210 010310 010209 ...
Je cherche que chaque jour de chaque année ce cumul et reste chronologique numériquement. En espérent avoir bien répondu à ton ?

CG2000
A+
 
Dernière édition:
Re : Renommé onglet exemple: 311209 en 091231

bonsoir à tous

pour le tri il est vrai que l'idéal c'est l'année, le mois, le jour !
Mais rappels toi le bug de l'an 2000
pour une histoire de place et de mémoire . . . On en est plus là !

si je puis me permettre, je te conseil donc,
exemple pour 01/02/10 soit 01 février 2010
de mettre 20100201

il est vrai aussi que si tu travailles uniquement à partir de 2000
ça ne posera pas de problème !
 
Re : Renommé onglet exemple: 311209 en 091231

Rebonsoir le forum,

Jean Pierre tu n'as pas d'excuse à faire il est vrai q'une question bien posée dés le départ évite des quiproquo. Je m'en excuse 😱 ce n'était volontaire. En ce qui concerne mon problème, malheureusement pour moi, je suis tributaire de fichiers avec ces onglets déjà faits et par différentes personnes et il ne m'est impossible d'obtenir le nommage ou renommage de ces onglets en AnnéeMoisJour, bien sur il m'importe que l'onglet soit 100101 ou 20100101 du moment qu'il soit possible que ce soit toujours AnnéeMoisJours. 😀

Merci a vous tous.
CG2000

Ps: Et à l'avenir j'énnoncerai entièrement le fond de mon idée final 😉
 
Dernière édition:
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir
petite macro
Code:
Sub Intervertir()
    Dim Compteur As Integer
    For Compteur = 1 To Sheets.Count
     Sheets(Compteur).Name = Right(Sheets(Compteur).Name, 4) & Left(Sheets(Compteur).Name, 2)
    Next
End Sub

Edition : Salut Jean Pierre

Pourquoi pas

Code:
Sub Intervertir()
    Dim Compteur As Integer
    For Compteur = 1 To Sheets.Count
     Sheets("Feuil1").Name = Right(Sheets("Feuil1").Name, 2) & Mid(Sheets("Feuil1").Name, 3, 2) & Left(Sheets("Feuil1").Name, 2)    
Next
End Sub
 
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir à tous
Une proposition (testée sur le modèle fourni) :
Code:
[COLOR="DarkSlateGray"][B]Sub renomme()
   toto True
End Sub

Sub annule()
   toto False
End Sub

Private Sub toto(o As Boolean)
Dim i As Long, j As Long, oDat()
   Application.ScreenUpdating = False
   For i = 1 To Worksheets.Count
      If Worksheets(i).Name Like "######" Then
         j = j + 1
         ReDim Preserve oDat(1 To 3, 1 To j)
         oDat(1, j) = "F" & j
         oDat(2, j) = Worksheets(i).Name
         oDat(3, j) = Right$(oDat(2, j), 2) & Mid$(oDat(2, j), 3, 2) & Left$(oDat(2, j), 2)
         Worksheets(i).Name = oDat(1, j)
      End If
   Next
   Worksheets.Add
   With Cells(1, 1).Resize(j, 3)
      .Value = WorksheetFunction.Transpose(oDat)
      .Sort Key1:=.Cells(1, 1).Offset(0, 1 - o), Order1:=xlAscending, Header:=xlNo, _
         OrderCustom:=1, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
      oDat = WorksheetFunction.Transpose(.Cells.Value)
   End With
   Application.DisplayAlerts = False
   ActiveSheet.Delete
   Application.DisplayAlerts = True
   For i = j To 1 Step -1
      Worksheets(oDat(1, i)).Move before:=Sheets(1)
      Sheets(1).Name = Right$("0" & oDat(3, i), 6)
   Next
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]
renomme() remplace les noms d'onglet au format jjmmaa par des noms au format aammjj. Le nom des feuilles dont les noms ne sont pas composés de six chiffres n'est pas modifié.

annule() fait l'opération inverse.

Reste à voir ce que cela donne avec cinq cents feuilles...​
ROGER2327
#2866
 
Re : Renommé onglet exemple: 311209 en 091231

Bonjour le fil, bonjour le forum,

Merci-bien à vous tous d'avoir répondu et résolu mon problème.😛
La proposition de Roger2327 est parfaite dans tous les sens :
Elle renomme bien mais onglets en AnnéeMoisJour, en les classents chronologiquement. Ignore le ou les onglets dont les noms ne sont pas composés de six chiffres. Et si nécessaire annule() / fait l'opération inverse. 😛

Cette macro offerte par Roger2327 à été testée sur un fichier très conséquent avec une plage de dates du 22/02/08 au 31/12/09 et avec des versions de Excel 2000 et 2003. Le résultat est parfait. 😛

Merci a vous tous de votre précieuse aide.
CG2000
 
Re : Renommé onglet exemple: 311209 en 091231

Donne un poisson à un homme et tu le nourris pour la journée
Apprend lui a pêcher et tu le nourris pour la vie.

n.b Je ne me souviens plus de l'auteur.

Jean-Marcel, si tu as des questions n'hésite pas
 
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir le forum, bonsoir le fil,🙂

Je viens de prendre connaissance de la macro de Jean-Marcel :

Sub Intervertir()
Dim Compteur As Integer
For Compteur = 1 To Sheets.Count
Sheets(Compteur).Name = Right(Sheets(Compteur).Name, 2) & Mid(Sheets(Compteur).Name, 3, 2) & Left(Sheets(Compteur).Name, 2)
Next
End Sub

Exellent résultat. 😛 Que de bonnes réponses à mon problème. 😛
Merci de nouveau à vous tous.

CG2000
 
Re : Renommé onglet exemple: 311209 en 091231

Re...
Bonsoir le forum, bonsoir le fil,🙂

Je viens de prendre connaissance de la macro de Jean-Marcel :

Sub Intervertir()
Dim Compteur As Integer
For Compteur = 1 To Sheets.Count
Sheets(Compteur).Name = Right(Sheets(Compteur).Name, 2) & Mid(Sheets(Compteur).Name, 3, 2) & Left(Sheets(Compteur).Name, 2)
Next
End Sub

Exellent résultat. 😛 Que de bonnes réponses à mon problème. 😛
Merci de nouveau à vous tous.

CG2000
Cette procédure fonctionne lorsqu'on a de la chance. Voyez le classeur joint.
ROGER2327
#2874
 

Pièces jointes

Re : Renommé onglet exemple: 311209 en 091231

Re...
J'ai songé à simplifier ma proposition et je crains que ce ne soit guère possible : la solution en une seule boucle me semble impossible.
Mais avec les pointures qui se promènent sur ce forum, je serai peut-être rapidement détrompé...
À suivre...​
ROGER2327
#2886
 
Re : Renommé onglet exemple: 311209 en 091231

Bonsoir ROGER2327, Jean-Marcel et le fil,

Bien vu le problème ROGER2327, et merci a vous deux de continuer à vous intéressez à ce sujet. 🙂

CG2000

Ps: Roger2327 ta macro du 01/03/2010 00h01, très complète et parfaite me rends de précieux gain de temps et de fonctionnalités. 😛
 
- 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

L
Réponses
4
Affichages
4 K
LAMULE
L
Y
Réponses
0
Affichages
19 K
yuuki
Y
J
Réponses
4
Affichages
4 K
jokair
J
L
Réponses
0
Affichages
874
littlelol
L
Retour