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

Fermé
GabrielTurbide Messages postés 2 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 26 mars 2019 - 26 mars 2019 à 18:32
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 26 mars 2019 à 19:18
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
26 mars 2019 à 19:07
bonjour, pourquoi ne peux-tu pas le modifier?
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
26 mars 2019 à 19:18
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