Renommer des onglets

matfab

XLDnaute Nouveau
Renommer des onglets [Résolu]

Bonjour,

Et tout d’abord à toutes et à tous une excellente année 2009 :)

J’ai le problème suivant sous Excel 2000 :
Il s’agit de remplacer automatiquement les 2 derniers caractères de chaque onglet en fonction de l’année. Exemple : l’onglet 01-08 devra s’appeler 02-09.

Chaque classeur comporte exactement 120 feuilles. Contexte : il s’agit d’un classeur de factures. Le nom de l’onglet est récupéré par la fonction CONCATENER pour former la fin du numéro de facture.

Jusqu’à présent je faisais un chercher/remplacer avec Notepad++ dans le fichier. Une solution bien sûr peu élégante.

Ensuite, j’ai adapté comme suit une macro trouvée sur le net :

Sub RenomOnglets()
Dim C As Integer
rep = 0
rep = InputBox("Nombre de feuilles à renommer")
rep1 = InputBox("Tapez le suffixe souhaité")
For o = 1 To rep
Worksheets(o).Name = o & rep1
Next o
End Sub


Inconvénient : les 9 premières feuilles sont nommées 1-09 ; 2-09 etc. au lieu de 01-09 ; 02-09 etc. Et il me faut les renommer manuellement.

Une solution ?

Merci d’avance,

Matfab
 
Dernière édition:

alexga78

XLDnaute Occasionnel
Re : Renommer des onglets

Salut matfab
un essai :
Option Explicit
Sub RenomOnglets()
Dim rep As Variant
Dim a As Byte
Dim i As Byte
rep = InputBox("Nombre de feuilles à renommer")
a = Format(Now, "yy")
For i = 1 To rep
Worksheets(i).Name = "0" & i & "-0" & a
Next i
End Sub

bonne soirée
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Renommer des onglets

Bonsoir,
S'il s'agit simplement de remplacer le "8" par un "9" dans tous les noms de feuille (à condition comme précisé que le "8" soit bien le dernier caractère) à tester
Code:
Sub RenomOnglets()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
    If Right(Ws.Name, 1) = "8" Then
    Ws.Name = Left(Ws.Name, Len(Ws.Name) - 1) & "9"
    End If
Next
End Sub
A+
kjin
 

alexga78

XLDnaute Occasionnel
Re : Renommer des onglets

ou un peu mieux que mon post précedent:

Sub RenomOnglets()
Dim I As Byte
For I = 1 To ActiveWorkbook.Worksheets.Count
Worksheets(I).Name = "0" & I & "-" & Format(Now, "yy")
Next I
End Sub

Bonne soiree
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux