Macro copie classeur excel

tofwolf Messages postés 3 Statut Membre -  
jordane45 Messages postés 30426 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

9 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. tofwolf Messages postés 3 Statut Membre
     
    J ai essayé mais rien ne se passe...
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
  3. tofwolf Messages postés 3 Statut Membre
     
    Je n'arrive pas à lire les réponses; il n'y a que le début de la réponse qui apparait
    0
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      C'est à toi de le mettre dans WORKBOOK
      0
      1. tofleveque > jordane45 Messages postés 30426 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
      2. tofleveque > jordane45 Messages postés 30426 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
  7. 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
  8. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  9. 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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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