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

Re...
(...)
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. 😛
Tant mieux, mais si vous faites un usage courant de cette procédure imparfaite, mieux vaut la rendre plus sûre.
Vous aurez remarqué que je renomme temporairement F1, F2, ... les feuilles à traiter. S'il se trouve malencontreusement une feuille d'un de ces noms temporaires dans le classeur, la procédure échouera.
Il ne vous aura pas plus échappé qu'au cas où il n'y aurait aucune feuille à renommer, l'échec de la procédure est assuré.
Pour obvier à ces inconvénients, je vous suggère d'utiliser ce qui suit :
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, k 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(2, j) = Worksheets(i).Name
         oDat(3, j) = Right$(oDat(2, j), 2) & Mid$(oDat(2, j), 3, 2) & Left$(oDat(2, j), 2)
         On Error GoTo E
         Worksheets(i).Name = "F" & j + k
         On Error GoTo 0
         oDat(1, j) = Worksheets(i).Name
      End If
   Next
   If j Then
      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
   End If
   Application.ScreenUpdating = True
Exit Sub
E: k = k + 1: Resume
End Sub[/B][/COLOR]
Cordialement,
ROGER2327
#2892
 
- 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