Sub NouveauMois()
Dim NouveauMois As Date
Dim CelluleSolde As Range
'Travailler sur la feuille active
With ActiveSheet
'S'il n'y a pas de date en C2 on sort
If Not IsDate(.Range("C2")) Then Exit Sub
'Date du nouveau mois
NouveauMois = DateSerial(Year(.Range("C2")), Month(.Range("C2")) + 1, 1)
'Cellule du solde du mois actuel
Set CelluleSolde = .Range("D40")
'Copier la feuille en fin de classeur
.Copy after:=Sheets(Sheets.Count)
'Détruire le bouton "cmdNouveauMois"
.Shapes("cmdNouveauMois").Delete
End With
'On a changé de feuille active on travail sur celle du nouveau mois
With ActiveSheet
'Mettre le nom de la feuille
.Name = Application.Proper(Format(NouveauMois, "mmmm yyyy"))
'Mettre la date dans la cellule C2
.Range("C2") = NouveauMois
'Mettre la formule de liaison avec le mois précédent
.Range("D4").FormulaR1C1 = "='" & CelluleSolde.Parent.Name & "'!" & CelluleSolde.Address(True, True, xlR1C1)
'Vider les anciennes valeurs
.Range("$C$6:$I$26,$C$28:$I$39").ClearContents
'Nommer le bouton pour que la macro le retrouve la prochaine fois
With .Shapes(.Shapes.Count)
.Name = "cmdNouveauMois"
'Attribuer cette macro au bouton
.OnAction = "'" & ThisWorkbook.Name & "'!NouveauMois"
End With
End With
End Sub