Renommer des onglets grâce à un bouton
Bonjour à tous,
Je travaille actuellement sur un code placé derrière deux boutons qui me permettent de renommer des onglets. Les noms de ces onglets sont des mois et années (Septembre 2014, Decembre 2014, Janvier 2015, Fevrier 2015 [...] Decembre 2015) Il y en a en tout 14 qui sont concernés par le renommage, deux de l'année précédente et les 12 mois de l'année en cours.
L'action de renommer les onglets permet donc de passer d'une année à l'autre. Par exemple, début Janvier 2016 :
J'ai créé un bouton "Année+1" qui me permet d'avancer d'une année et un bouton "Année-1" au cas où un utilisateur aurait avancé d'une année par mégarde et qu'il souhaiterait revenir en arrière.Suite à des problèmes de noms déjà existants lors de la boucle qui renomme, j'ai séparé la procédure en deux boucles :
- La première renomme tous les onglets en 1, 2, 3 [...] jusqu'à 14 (ça fonctionne)
- La seconde est censée reprendre ces nouveaux noms numériques pour les convertir en Septembre 2015, Decembre 2015, Janvier 2016, Fevrier 2016, etc.
Dim Annee As Variant
Dim Plage As Range
Dim Nom_New_Onglet As String
Dim Cell As Range
Dim I As Variant
Annee = Sheets("Param").Range("Annee_en_cours").Value
Set Plage = Sheets("Param").Range("Liste_Annee")
I = 1
' 1ere boucle pour renommer les onglets en Mois i
For Each Cell In Plage
Nom_New_Onglet = I
Sheets("" + CStr(Cell.Value) + "").Name = Nom_New_Onglet
I = I + 1
Next Cell
' Modifie la cellule "Annee" pour lui ajouter ou retirer un an selon le bouton actionné
' Ceci entraine une modification de toutes les dates par une concaténation dans une feuille "Param"
' à laquelle font référence tous les champs : "Annee_en_cours" ; "Liste_Annee"
If Mode = "PLUS" Then
Sheets("Param").Range("Annee_en_cours").Value = Annee + 1
Else
Sheets("Param").Range("Annee_en_cours").Value = Annee - 1
End If
I = 1
' 2ème boucle pour renommer les mois i en mois calendaire
For Each Cell In Plage
Nom_New_Onglet = Mid(Cell.Value, 1, Len(Cell.Value) - 4) + CStr(Annee + 1)
Sheets(I = I + 1).Name = I 'C'est ici que je bloque sur la manière dont je dois appeler les onglets nouvellement renommés
I = ("" + CStr(Cell.Value) + "")
Next Cell
End SubAuriez-vous une idée du code adéquat pour faire fonctionner cette seconde boucle ? Je vous joint mon fichier pour plus de clarté (le code en question se trouve dans le module 2) :
https://www.cjoint.com/c/EGgj5db5bo0
Merci d'avance pour l'aide que vous pourrez m'apporter
Bonjour
Teste cette macro
Sub Changement_AN(Mode As String) 'Renomme les mois au changement d'année
Dim Annee As Variant
Dim Plage As Range
Dim Cell As Range
Dim I As Variant
Annee = Sheets("Param").Range("Annee_en_cours").Value
Set Plage = Sheets("Param").Range("Liste_Annee")
I = 1
' 1ere boucle pour renommer les onglets en Mois i
For Each Cell In Plage
Sheets(Cell.Value).Name = I 'Nom_New_Onglet
I = I + 1
Next Cell
' Modifie ma cellule "Annee" pour lui ajouter ou retirer un an selon le bouton actionné
' Ceci entraine une modification de toutes les dates par une concaténation dans une feuille "Param"
' à laquelle font référence tous les champs : "Annee_en_cours" ; "Liste_Annee"
If Mode = "PLUS" Then
Sheets("Param").Range("Annee_en_cours").Value = Annee + 1
Else
Sheets("Param").Range("Annee_en_cours").Value = Annee - 1
End If
I = 1
' 2ème boucle pour renommer les mois i en mois calendaire
For Each Cell In Plage
Sheets(CStr(I)).Name = Cell.Value
I = I + 1
Next Cell
End SubBonjour Banzai64,
J'ai compris où était mon erreur et ça fonctionne parfaitement
Merci beaucoup !!