Renommer une feuille en VBA

D

david

Guest
Je voudrais renommer une feuille à l'ouverture d'un classeur .
La feuille est une archive annuelle "Encour" sur la quelle pointe plusieurs macros. Au changement d'année la feuille doit se renommer 2003 et la Feuille 2004 doit prendre le nom "encour"
Je dois tester l'existance de cette feuille . Si elle est differente du nom qu'elle doit porter la renommer
la cellule du nom inexistant=texte(aujourdhui();"aaa") ---->2003
la cellule du nom a attribué=texte(cnum(cell de desus)-1;"@") ---->2002
ces valeurs texte si la première valeur est le nom d'une feuille on renome la feuille "encours" en "2002" puis la feuille nomme "2003" en "encours"
a chaque changement d'année la feuille est archivé .Ceci concerne un carnet de BL .
Merci a tous G.David
 
D

david

Guest
Private Sub Workbook_Open()



Dim nomfeuil() As String
Dim nbfeuil As Integer
' barre d'outil______________________________________
Application.CommandBars("BL_Serveur").Visible = True
'renommer les feuilles______________________________
nbfeuil = ActiveWorkbook.Sheets.Count ' nb feuilles ds le classeur
ReDim nomfeuil(1 To nbfeuil) ' redimmensionner le tableau
juste 9 tasses de cafés plus tard voici ma ponte je vous teins au courant a partir de la reprise du nouvel an si cele marche. Désolé d'avoir pris de la place
A+

For i = 1 To nbfeuil
nomfeuil(i) = ActiveWorkbook.Sheets(i).Name 'tableau de nom
Next i

For t = 1 To nbfeuil 'relire les noms
If Sheet(2).Range("HJ1").Value = nomfeuil(t) Then 'si 2003 est trouvé
For f = 1 To nbfeuil 'on relit pour trouver
If nomfeuil(f) = "encour" Then 'la feuille "encour"
nomfeuil(f) = Sheets(2).Range("hj2").Value 'on lui attribut la valeur "2002"
End If
Next f
Sheets(t).Name = "encour" 'on renomme 2003 en "encour"
End If
Next t

End Sub
 
T

Ti

Guest
voici une macro qui te fait ça :

Dans Thisworkbook, tu places cette macro :

Private Sub Workbook_Open()
RenommeFeuilleDate
End Sub

et tu places celle-ci dans un module :

Sub RenommeFeuilleDate()
Dim LaDate As String, Ws As Worksheet
Dim WsAnnee As Worksheet, WsEnCours As Worksheet
LaDate = CStr(Year(Date))
With ThisWorkbook
For Each Ws In .Worksheets
If Ws.Name = LaDate Then
'on a changé d'année
ThisWorkbook.Worksheets("Encours").Name = _
CStr(Val(LaDate) - 1)
Ws.Name = "Encours"
Exit For
End If
Next Ws
End With
End Sub

On suppose que ta feuille 2004 existe déjà. Au changement d'année, ta feuille 2004 sera renommée automatiquement, et la feuille EnCours deviendra 2003. Et ainsi de suite en 2005, pour peu que la feuille 2005 existe déjà au nouveau changement d'année.
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia