Macro copie classeur excel

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

9 réponses

  1. Modérateur
    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
    1. J ai essayé mais rien ne se passe...
      0
      1. Modérateur
        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
    2. Je n'arrive pas à lire les réponses; il n'y a que le début de la réponse qui apparait
      0
      1. Modérateur
        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
        1. 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
          1. Modérateur
            C'est à toi de le mettre dans WORKBOOK
            0
          2. @jordane45Quand 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
          3. @jordane45J'ai essayé avec workbook_SheetChange
            Cela me met une erreur de compil
            "Membre de méthode ou de données introuvables"
            0
        2. 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
          1. Modérateur
            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
            1. 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
              1. Modérateur
                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