FORUM Tom's Hardware » Programmation » Autre » [Excel :: Macro VBA] Copier un fichier excel et le renommer
 

[Excel :: Macro VBA] Copier un fichier excel et le renommer

Il y a 208 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [Excel :: Macro VBA] Copier un fichier excel et le renommer
 
Plus d'informations

Bonjour,
 
J'ai un fichier Excel avec plusieurs Sheets. Je voudrais pouvoir le copier (contenu et forme) et enregistrer cet copie sous un autre nom.
 
Je pensais résoudre ce problème en créant un nouveau fichier et en y collant le contenu et la forme du fichier initiale. J'ai trouvé comment créer un nouveau fichier Excel mais je ne sais pas comment copier le contenu et la forme de mon fichier initiale vers le nouveau. Quelqu'un sait-il comment faire?
 
Merci,
 
Laurent

zeb
Profil : Modérateur libre
Plus d'informations

Enregistre le tout dans une macro et adapte le code.
 
Pour adapter ce code, tu peux t'aider de ta jujotte, de l'aide en ligne, puis de PPC :)


Message édité par zeb le 19-07-2006 à 10:48:33
Plus d'informations

oui ça je sais faire, voilà ce que ce cela donne...
 

Code :
  1. Sub Ini_RA()
  2. '
  3. ' Ini_RA Macro
  4. ' Macro recorded 18/07/2006 by Laurent
  5. '
  6.     Dim nb As Integer
  7.     nb = 15 'Session number
  8.    
  9.     Dim Counter As Integer 'Counter variable
  10.     Dim PourcentageEffectue As Single 'Pourcentage progress bar variable
  11.    
  12.     'Create a new Workbook named RA.xls 
  13.     Workbooks.Add
  14.     ActiveWorkbook.SaveAs Filename:= _
  15.         "C:\Temp\RA.xls" _
  16.         , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
  17.         ReadOnlyRecommended:=False, CreateBackup:=False
  18.     'Create and name sheets
  19.     Dim i, j As Integer
  20.     For i = 4 To nb
  21.         j = i - 1
  22.         Sheets.Add
  23.         Sheets("Sheet" & i).Move After:=Sheets(j)
  24.         Sheets("Sheet" & i).Name = "Session" & i
  25.     Next i
  26.     Sheets("Sheet1" ).Name = "Session1"
  27.     Sheets("Sheet2" ).Name = "Session2"
  28.     Sheets("Sheet3" ).Name = "Session3"
  29.     Sheets("Session3" ).Move After:=Sheets(2)
  30.    
  31.     'Copy model from Copy of RA.xls
  32.     Windows("Copy of RA.xls" ).Activate
  33.     Sheets("Session1" ).Select
  34.     Cells.Select
  35.     Selection.Copy
  36.     Windows("RA.xls" ).Activate
  37.     Dim k As Integer
  38.     For k = 1 To nb
  39.         Sheets("Session" & k).Select
  40.         ActiveSheet.Paste
  41.     Next k
  42.    
  43.     'Page setup
  44.     For k = 1 To nb
  45.    
  46.         'Progress Bar
  47.         Counter = k
  48.         PourcentageEffectue = Counter / nb
  49.         Call UpdateProgress(PourcentageEffectue)
  50.        
  51.         Sheets("Session" & k).Select
  52.         With ActiveSheet.PageSetup
  53.             .LeftMargin = Application.InchesToPoints(0.75)
  54.             .RightMargin = Application.InchesToPoints(0.75)
  55.             .TopMargin = Application.InchesToPoints(1)
  56.             .BottomMargin = Application.InchesToPoints(1)
  57.             .HeaderMargin = Application.InchesToPoints(0.5)
  58.             .FooterMargin = Application.InchesToPoints(0.5)
  59.             .PrintHeadings = False
  60.             .PrintGridlines = False
  61.             .PrintComments = xlPrintNoComments
  62.             .PrintQuality = 300
  63.             .CenterHorizontally = False
  64.             .CenterVertically = False
  65.             .Orientation = xlLandscape
  66.             .Draft = False
  67.             .PaperSize = xlPaperA4
  68.             .FirstPageNumber = xlAutomatic
  69.             .Order = xlDownThenOver
  70.             .BlackAndWhite = False
  71.             .Zoom = False
  72.             .FitToPagesWide = 1
  73.             .FitToPagesTall = 1
  74.             .PrintErrors = xlPrintErrorsDisplayed
  75.         End With
  76.     Next k
  77.     Windows("Mesure.xls" ).Activate
  78.     Sheets("Measure" ).Select
  79.     Unload FrmProgression2
  80. End Sub
  81. Sub UpdateProgress(PourcentageEffectue)
  82.     With FrmProgression2
  83.         .FrameProgress2.Caption = Format(PourcentageEffectue, "0%" )
  84.         .LabelProgress.Width = PourcentageEffectue * (.FrameProgress2.Width - 10)
  85.         .Repaint
  86.     End With
  87. End Sub


En ajoutant ceci pour execution plus rapide

Code :
  1. Private Sub UserForm_activate()
  2.     Application.ScreenUpdating = False
  3.     Call Ini_RA
  4.     Application.ScreenUpdating = True
  5. End Sub


 
Mais n'y a-t-il pas une fonction qui permette directement de copier un fichier entier? Plutôt que de copier ces paramètres un à un?
Car en enregistrant la macro, l'execution est assez lente(peut-être aussi ai-je mal optimisé mon code...)


Message édité par laurent350 00 le 19-07-2006 à 16:53:25
Plus d'informations

Le plus simple c'est d'enregistrer ton fichier sous un autre nom afin d'en créer une copie parfaite et ce en 3 lignes de code :)

zeb
Profil : Modérateur libre
Plus d'informations

Citation :

tu peux t'aider de ta jujotte


Dimitrifrom31> +1 :D

Plus d'informations

En fait j'ai été confronté au mêle problème pour le fichier sur lequel je travaille en ce moment (et pour lequel j'ai également demandé de l'aide).
 
Voici mon code (je l'édite un peu pour retirer les morceaux qui te seront inutiles) en espérant que cela te facilite la tâche) :
 

Code :
  1. Sub copiersousunautrenom()
  2. ActiveWorkbook.Save
  3. 'ça c'est pour ne pas perdre le travail effectué sous ton fichier d'origine avec le nom d'origine, ça paraît idiot mais je l'avais pas mis au début.
  4.    
  5.  
  6. jour = Day(Now) & "_" & Month(Now) & "_" & Year(Now)
  7. monfichier = "C:\DOSSIER\" & Sheets("feuil1" ).Range("A1" ).Value & " " & jour
  8. 'ça c'est pour définir le nom de ta copie, ici elle prendra le nom de ta cellule A1 feuille 1 + jour - mois - année
  9.  
  10.    
  11. If Dir(monfichier & ".xls" ) <> "" Then
  12. MsgBox ("Un fichier de ce nom existe déjà, veuillez le supprimer/déplacer avant nouvelle copie" )
  13. Else
  14. monfichier = monfichier & ".xls"
  15.     ActiveWorkbook.SaveAs Filename:= _
  16.         monfichier, _
  17.         FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
  18.         ReadOnlyRecommended:=False, CreateBackup:=False
  19.                          
  20.     Workbooks.Open Filename:= _
  21.         "C:\DOSSIER\fichier d'origine.xls"
  22. 'ça c'est si tu veux réouvrir ton fichier d'origine pour faire de nouvelles copies
  23.        
  24.         MsgBox ("Fichier créé dans C:\DOSSIER\" )
  25.             End If
  26.         End Sub


 
Comme tu vois c'est un code tout bête mais ça devrait répondre à ta question.


Message édité par Dimitrifro m31 le 31-07-2006 à 12:11:58

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » [Excel :: Macro VBA] Copier un fichier excel et le renommer
 

Annonces Google
Publicité