Ouvrir une copie d'un Workbook "Read-Only", Modifier, Imprimer et Refe

GabrielTurbide Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Kalissi Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Dans un fichier Excel, je voudrais une macro qui vient ouvrir un autre fichier Excel, le modifier et imprimer certaines pages.

Le problème est que le fichier externe à modifier ne peut pas être ouvert en écriture. Il faudrait donc ouvrir une copie, la modifier, imprimer les pages en question et fermer cette copie, sans toucher à l'original. Le fichier modifié n'est plus utile suite à l'impression, alors il est préférable de ne pas l'enregistrer, ou de supprimer la copie après son enregistrement.

Sub Imprimer(NumJob)

Dim app As New Excel.Application
Dim sourceWorkbookPro As Workbook

app.Visible = False

Set sourceWorkbookPro = app.Workbooks.Open("C:\Users\xx.xx\Documents\DocumentACopier.xlsm", 0, ReadOnly:=True)

...

sourceWorkbookPro.Close SaveChanges:=False
app.Quit
Set app = Nothing

End Sub


De cette manière, je ne peux pas le modifier. J'ai pensé à enregistrer une copie pour ensuite le modifier et supprimer la copie, mais y a-t-il une façon de ne rien enregistrer pour diminuer le temps du code?

Merci d'avance! :)

Gabriel.
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, pourquoi ne peux-tu pas le modifier?
0
Kalissi Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   20
 
Bonjour,

Exemple :

Option Explicit
'

Public Sub ImprimerV2(NumJob)

    Dim ClasseurACopier As Workbook
    
    Set ClasseurACopier = Workbooks.Open("C:\Document\Dev\Excel_VBA\Calculs.xlsm", 0, ReadOnly:=True)
    ClasseurACopier.SaveAs ("C:\Document\Dev\Excel_VBA\CalculsCopie.xlsm")
    
    ' Traitement du fichier - Modification, Impression, etc ...
    ' ton code ici ...
    
    ClasseurACopier.Close
   
    ' Suppression de la copie de travail
    Kill "C:\Document\Dev\Excel_VBA\CalculsCopie.xlsm"
    
    ThisWorkbook.Activate

End Sub



Note : Il n'est pas vraiment utile d'instancier une itération de Excel ... Dim app As New Excel.Application
si tu est déjà dans un classeur Excel. Selon la syntaxe que tu applique on croirait que tu code en VBS dans le bloc note.

K
0