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.
C'est ici que ça coince. Je n'arrive pas à trouver la bonne syntaxe pour appeler les onglets renommés " 1 2 3 4 5 6 7 8 9 10 11 12 13 14" puisqu'on me renvoie une erreur "L'indice n’appartient pas à la sélection"
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 Sub

Auriez-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 Sub

Bonjour Banzai64,

J'ai compris où était mon erreur et ça fonctionne parfaitement

Merci beaucoup !!

Rechercher des sujets similaires à "renommer onglets bouton"