XL 2016 Effacer données d'un tableau, le copier et le renommer dans une nouvelle feuille excel 2016

fafane10

XLDnaute Nouveau
Bonjour à tous et toutes,

Je fais un fichier budget tracker et souhaiterais faire un bouton avec une macro réalisant:
- effacer les données des cellules non protégées (ce sont les cellules contenant les opening reserve de chaque mois ainsi que les cellules contenant les chiffres correspondant aux dépenses dans chaque colonne, les totaux sont protégés)
- copier la feuille contenant le tableau vierge et les graphes
- les coller dans une nouvelle feuille du worksheet que la macro renommerait avec l'année n+1

J'ai eu beau chercher des heures sur des forums , rien trouvé de similaire.
Pourriez vous m'aider ?
le fichier est joint.

Merci !
 

Pièces jointes

  • BudgetTrackingtest.xls
    140 KB · Affichages: 17

Staple1600

XLDnaute Barbatruc
Bonjour le fil, fafane10

fafane10
Le test semble OK sur ton fichier exemple.
Je te laisse confirmer ou pas ;)
VB:
Sub EffacereEtCopier()
Dim sAN&
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet
    sAN = .Name: .Unprotect
    'effacement
    .Range("A1:N76").SpecialCells(xlCellTypeConstants, 1).ClearContents
    .Copy after:=Sheets(Sheets.Count): .Protect
End With
ActiveSheet.Name = sAN + 1
ActiveSheet.Protect
End Sub
 

fafane10

XLDnaute Nouveau
Bonjour Staples !!

Merci pour ton aide. J'ai intégré tes lignes dans visual basic et cela a effectivement copié la page et en a créé une nouvelle.
Cependant les données n'était pas effacées ( m'y suis je mal pris ?) et cela a renommé la page en 2019 (2) alors que je souhaiterais que cela renomme en année +1 ( est ce possible?): 2020, 2021 etc.



Bonjour le fil, fafane10

fafane10
Le test semble OK sur ton fichier exemple.
Je te laisse confirmer ou pas ;)
VB:
Sub EffacereEtCopier()
Dim sAN&
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet
    sAN = .Name: .Unprotect
    'effacement
    .Range("A1:N76").SpecialCells(xlCellTypeConstants, 1).ClearContents
    .Copy after:=Sheets(Sheets.Count): .Protect
End With
ActiveSheet.Name = sAN + 1
ActiveSheet.Protect
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, fafane10

Chez moi, (et en testant sur ton fichier exemple)
1) La feuille active est par exemple, la feuille 2019
2) Je lance ma macro
Les cellules numériques non protégées sont effacées.
3) La feuille 2019 est recopiée après la dernière feuille du classeur et renommée 2020.

Je viens de refaire le test et je confirme donc tout ce que je viens de dire ;)
 

fafane10

XLDnaute Nouveau
Oui pardon j"avais fais une erreur !!!!!

Merci beaucoup Staples c'est cool !!!!!!!

Génial

Bonsoir le fil, fafane10

Chez moi, (et en testant sur ton fichier exemple)
1) La feuille active est par exemple, la feuille 2019
2) Je lance ma macro
Les cellules numériques non protégées sont effacées.
3) La feuille 2019 est recopiée après la dernière feuille du classeur et renommée 2020.

Je viens de refaire le test et je confirme donc tout ce que je viens de dire ;)
 

Discussions similaires