Copyas Copier un classeur xlsx et xlsx

Résolu
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -  
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je rencontre une difficulté sur la sauvegarde d'un classeur XL.
il faut que mon fichier xlsm soit copier en xlsx c'est à dire sans macro.

Le problème c'est qu'il me faut absolument une copie.
Car l'enregistrer sous "Saveas" ne convient pas à l'utilisation.
Par contre le SaveCopieAs ne fonctionne pas avec la ligne qui transforme en xlsx.

Voici le code

Sub Sauvegarde_sur_ordre()
Dim chemin As String
Dim fichier As String

chemin = Range("Chemin").Text

fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & _"hh""h""mm") & " " & "" & ".xlsx"

Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
End Sub

Quel qu un a t il une idée ?

Par avance merci

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Il y a sans doute plus élégant mais ceci devrait fonctionner :
    Sub Sauvegarde_sur_ordre()
    Dim chemin As String
    Dim fichier As String
    Dim nom As String
        nom = ThisWorkbook.FullName
        chemin = Range("Chemin").Text
        
        fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx"
        
        
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
        ActiveWorkbook.SaveAs nom, FileFormat:=xlOpenXMLWorkbookMacroEnabled
        Application.DisplayAlerts = True
    End Sub
    1
    1. CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonsoir et merci,

      Mais j'ai toujours une erreur d exécution 1004
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir

      Sur quelle ligne car j'ai corrigé ta ligne fichier qui état erronée ?
      0
    3. CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour,

      Sur cette ligne

      ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
      0
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      C'est ton "chemin & fichier" qui est incorrect
      0
    5. CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
       
      C'est bon,

      j'avais oublié l'extension dans la cellule nommée

      Merci beaucoup de ton aide
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Effectivement ça fonctionne par contre j'ai un message d'erreur :

    Essaies cette nouvelle macro, avec une approche totalement différente, cela ira plus vite et cela ne devrait pas planter.
    Sub Sauvegarde_sur_ordre()
    Dim chemin As String
    Dim fichier As String
    Dim sh As Worksheet
    Dim wk As Workbook
    Dim ws As Workbook
        Set wk = ThisWorkbook
        chemin = Range("Chemin").Text
        fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx"
        Application.DisplayAlerts = False
        Set ws = Workbooks.Add
        For Each sh In wk.Worksheets
            sh.Cells.Copy
            With ws.ActiveSheet.Range("A1")
                .PasteSpecial xlPasteValues
                .PasteSpecial xlPasteFormats
                .PasteSpecial xlPasteColumnWidths
            End With
            ws.ActiveSheet.Name = sh.Name
            ws.Sheets.Add after:=ActiveSheet
        Next sh
        ws.ActiveSheet.Delete
        ws.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
        ws.Close True
        Application.DisplayAlerts = True
    End Sub

    1
    1. CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonjour,

      Je viens de l'essayer

      je confirme ce code fonctionne parfaitement.

      Un grand merci à toi pour ce précieux coup de main.
      0