Macro copie classeur excel

tofwolf Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aimerai une macro qui, à chaque sauvegarde de mon classeur, crée une copie de ce classeur dans un autre répertoire au format PDF.
Est ce possible ? Pouvez vous m'aider ?

Merci

Christophe
A voir également:

9 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Code à placer dans l'objet thisWorkbook de ton éditeur VBA.

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim RepToSave As String
Dim ceClasseur As Workbook
Set ceClasseur = ThisWorkbook

RepToSave = "c:\TEMP\"
ThisWorkbook.SaveCopyAs RepToSave & ceClasseur.Name

End Sub



0
tofwolf Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
J ai essayé mais rien ne se passe...
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu as changé la variable RepToSave ?
Par contre je viens de voir que tu voulais en PDF ....
J'avais mal lu...

Le code ci-dessous exportera en PDF la feuille active du classeur lorsque tu cliqueras sur enregistrer
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim RepToSave As String
RepToSave = "c:\TEMP"
'sauvegarde de la feuille active en PDF
Call PDFActiveSheet(RepToSave)
End Sub


Sub PDFActiveSheet(RepToSave As String)
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(ws.Name, " ", ""), ".", "_") _
            & "_" _
            & Format(Now(), "yyyymmdd\_hhmm") _
            & ".pdf"
strFile = RepToSave & "\" & strFile

myFile = strFile
If myFile <> "False" Then
    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

    MsgBox "PDF file has been created."
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler


End Sub

0
tofwolf Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Je n'arrive pas à lire les réponses; il n'y a que le début de la réponse qui apparait
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et là tu peux tout lire ?

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim RepToSave As String
RepToSave = "c:\TEMP"
'sauvegarde de la feuille active en PDF
Call PDFActiveSheet(RepToSave)
End Sub


Sub PDFActiveSheet(RepToSave As String)
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(ws.Name, " ", ""), ".", "_") _
            & "_" _
            & Format(Now(), "yyyymmdd\_hhmm") _
            & ".pdf"
strFile = RepToSave & "\" & strFile

myFile = strFile
If myFile <> "False" Then
    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

    MsgBox "PDF file has been created."
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler


End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tofleveque
 
Bonjour,

J'ai essayé ta solution, cela ne fait rien; aucun fichier ne se créé dans le rep c:\temp. Dans VBA quand je saisi ta macro il le met dans general et non dans workbook
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
C'est à toi de le mettre dans WORKBOOK
0
tofleveque > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Quand je vais dans workbook dans le menu déroulant à droite il n'y a pas workbook_AfterSave. Quand je saisi manuellement la premiere ligne cela me met dans general
0
tofleveque > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
J'ai essayé avec workbook_SheetChange
Cela me met une erreur de compil
"Membre de méthode ou de données introuvables"
0
tofleveque
 
Je me mets dans workbook mais à partir du moment où je saise la première ligne cela change et ça se met dans général
0
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
J'ai répondu à cette même question il me semble postée deux fois :

https://forums.commentcamarche.net/forum/affich-31407537-macro-pour-copie-du-classeur-en-fichier-pdf
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Quand je vais dans workbook dans le menu déroulant à droite il n'y a pas workbook_AfterSave


Ah bon ???

Si tu n'as pas ça ... soit tu as une vielle version d'Excel ... soit tu n'es pas sous Excel....
Quelle version d'office as tu ?


0
tofleveque
 
J'ai trouvé : dans ma version j'ai workbook_BeforeSave.

Par contre il me met erreur de compil aprés le Le PDFActiveSheet
le débogeur me met membre de méthode ou de données introuvable et me surligne ".ExportAsFixedFormat"
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Si tu as le Before .. tu dois aussi avoir le After ... !!

Si tu as une erreur... cela est surement dû à ta version d'excel... peux tu enfin me répondre et nous dire QUELLE VERSION d'OFFICE AS TU ???
0