Copyas Copier un classeur xlsx et xlsx

Résolu/Fermé
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 29 mai 2016 à 18:57
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 7 juin 2016 à 10:49
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


A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
29 mai 2016 à 21:57
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
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1
29 mai 2016 à 22:17
Bonsoir et merci,

Mais j'ai toujours une erreur d exécution 1004
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
29 mai 2016 à 22:51
Bonsoir

Sur quelle ligne car j'ai corrigé ta ligne fichier qui état erronée ?
0
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
30 mai 2016 à 08:47
Bonjour,

Sur cette ligne

ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
30 mai 2016 à 09:00
Bonjour,

C'est ton "chemin & fichier" qui est incorrect
0
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1
30 mai 2016 à 09:09
C'est bon,

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

Merci beaucoup de ton aide
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
6 juin 2016 à 19:04
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
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 1
7 juin 2016 à 10:49
Bonjour,

Je viens de l'essayer

je confirme ce code fonctionne parfaitement.

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