Changement de nom incrémenté d'un classeur

PhP

XLDnaute Nouveau
Bonjour,

Voici un petit sujet de macro (je travaille avec Excel 2007).

J'ai un classeur dont le nom est "Classeur N", où N est une année, par exemple 2013.

Je veux le faire migrer vers l'année N+1.

Pour ce faire, j'ai rédigé une macro qui va bien, sauf le départ qui justement ne fonctionne pas.

Je joins donc le début de cette syntaxe boiteuse.

Le problème :

Je commence par enregistrer Classeur N sous le nom de Classeur N+1. C'est ça qui ne marche pas.

J'ai déclaré une variable "Année". Mais la machine ne la prend pas en compte, et appelle mon classeur "Classeur Année" et non pas "Classeur 2014".

Sub MigrClasseur

Dim Année As Integer

Sheets("Aperçu général").Select
Range("E1").Select
Année = ActiveCell.Value
ActiveWorkbook.Save
Année = Année + 1
ChDir _
"C:\Users\PhP\Documents\Sauvegarde générale\Budget"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\P\Documents\Sauvegarde générale\Budget\Classeur Année.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

.............................................

Bien sûr, je pourrais régler ce détail manuellement après coup, mais, tant qu'à faire ...

Voilà, si quelqu'un veut bien m'éclairer, je le remercie.

Bien à vous
 

Jacou

XLDnaute Impliqué
Re : Changement de nom incrémenté d'un classeur

Bonjour PhP, bonjour le forum,

Je te propose le code suivant :

Sub MigrClasseur()
'
Dim Année As Integer

Année = Sheets("Aperçu général").Range("E1") +1
ActiveWorkbook.Save
nomfic$ = ActiveWorkbook.Name
chemin$ = Left(ActiveWorkbook.FullName, (Len(ActiveWorkbook.FullName) - Len(nomfic$)))
i = InStr(ActiveWorkbook.Name, ".")
lfic = Len(nomfic$)
ext$ = ".xlsm"
debutnom$ = Left(nomfic$, i - 5)
Année = Année + 1
newnomfic$ = debutnom$ & Année & ext$
ActiveWorkbook.SaveAs Filename:=chemin$ & newnomfic$ _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

bonne fin de journée
 

Lone-wolf

XLDnaute Barbatruc
Re : Changement de nom incrémenté d'un classeur

Bonjour PhP,

voici un code à tester


Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
dim i as Integer, n as Integer, chemin as String, nom as String
With Feuil1
For i = 1 To 1
n = n + 1
.Range("e1").Value = .Range("e1").Value + n
Application.DisplayAlerts = False
ActiveWorkbook.Save
Next
Set annee = .Range("e1")
chemin = ThisWorkbook.Path & "\"    'à changer
nom = "Classeur " & annee & ".xls"
End With
ActiveWorkbook.SaveAs Filename:=chemin & nom
End Sub

A+ :cool:
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 728
Messages
2 091 409
Membres
104 918
dernier inscrit
Laresse