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. 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
  2. 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. 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. 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. 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. Je n'arrive pas à lire les réponses; il n'y a que le début de la réponse qui apparait
          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. 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