IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

[Actualit�] VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ?

Noter ce billet
par , 21/06/2023 � 11h43 (5160 Affichages)
Pr�ambule
La copie d'un classeur est une op�ration courante dans de nombreux contextes.
L'objet Workbook offre la m�thode SaveAs pour r�aliser cette t�che, permettant de dupliquer un classeur tout en lui attribuant un nouveau nom et un emplacement diff�rent.
Cependant, cette m�thode pr�sente un inconv�nient : le classeur ainsi copi� devient automatiquement le classeur actif. Cela peut poser probl�me lorsque nous souhaitons effectuer une copie avant d'entreprendre des modifications, de la maintenance ou le d�veloppement de nouvelles fonctionnalit�s, tout en conservant le classeur original comme actif.

La m�thode SaveCopyAs offre une solution � ce probl�me, en permettant de r�aliser une copie tout en gardant le classeur original actif. Cependant, bien qu'elle permette de changer l'emplacement du classeur, elle ne permet pas de modifier son nom.

Pour contourner cette limitation, j'ai d�velopp� une proc�dure g�n�rique qui effectue une copie du classeur et le renomme ensuite. Le nouveau nom est pr�fix� par la date (en format invers�) et l'heure de la copie, ce qui permet de r�aliser plusieurs copies le m�me jour et de conserver un historique. C'est une solution pratique et efficace pour g�rer les versions de vos classeurs.

Code de la proc�dure
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub MakeBackUp(Optional oWorkbook As Workbook)
  ' Effectue une copie du classeur d�fini par l'argument oWorkbook (d:ActiveOWorkbook)
  '   dans le sous-r�pertoire nomm� BackUp
  '   La copie est renomm�e du nom du classeur avec comme pr�fixe la date invers�e et l'heure
  ' Argument
  '  [oWorkbook] Nom du classeur � copier (ActiveWorkbook si pas pr�cis�
  Const SubFolder As String = "\BackUp\"
  Dim FileName As String
  Dim FullName As String
  Dim FullPath As String
  Dim NewFileName As String
  Dim Path As String
  If oWorkbook Is Nothing Then Set oWorkbook = ActiveWorkbook
  With oWorkbook: FileName = .Name: Path = .Path: End With
  FullPath = Path & SubFolder
  FullName = FullPath & FileName
  NewFileName = FullPath & Format(Now, "yymmdd hhmm") & " - " & FileName
  ThisWorkbook.SaveCopyAs FullName ' Copie le classeur
  Name FullName As NewFileName     ' Renommer le fichier
End Sub
Cette proc�dure peut �tre invoqu�e par cette seule instruction si l'on souhaite copier le classeur actif
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
Sub TestMakeBackup()
  MakeBackUp
End Sub

Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Viadeo Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Twitter Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Google Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Facebook Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Digg Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Delicious Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog MySpace Envoyer le billet � VBA Excel - Copier un classeur en utilisant la m�thode SaveCopyAs au lieu de SaveAs ? � dans le blog Yahoo

Cat�gories
VBA Excel

Commentaires