Export d'une copie au format xlsx

Résolu/Fermé
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020 - 4 mai 2020 à 10:33
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020 - 5 mai 2020 à 15:52
Bonjour à tous et toutes,
Voila je suis confronté à un léger problème.
Je remplis un fichier via un autre, juste là tout va bien. Sur ce fichier il y a une macro (format du fichier xlsm) . Ce dernier doit être transmis au format xlsx. J'aimerai donc enregistrer le fichier source sous un autre format (passer du xlsm au xlsx) sans fermer celui sur le lequel je travaille (pour en générer plusieurs).

Pour résumer simplement j'aimerai réaliser un export d'une copie du fichier au format xlsx le tout en lui donnant un nom moi même (comme dans enregistrer sous classique).

Pour le moment je me débrouille avec un bon vieux :

ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS

Sauf que :
-je ne suis pas toujours sur le même poste donc le chemin du desktop n'est pas le même partout
-le fichier a toujours le même nom je ne peux pas en générer plusieurs sans renommer le premier

Voila si quelqu'un a une idée de comment réaliser ceci sous vba

D'avance merci et bonne journée

Configuration: Windows / Chrome 81.0.4044.129
A voir également:

3 réponses

jordane45 Messages postés 38202 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2024 4 675
4 mai 2020 à 10:42
Bonjour,

Pour ce qui est du chemin, pourquoi ne pas te baser sur le chemin du classeur actuel
sFolderPath  = ActiveWorkbook.Path


Et pour ce qui est du nom du fichier, un prompt ( inputbox) correspondrait à tes besoins
https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.inputbox

.
1
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020
4 mai 2020 à 11:42
Effectivement c'est une bonne idée je vais me pencher dessus, merci. je vais voir pour intégrer ceci.
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
Modifié le 4 mai 2020 à 11:36
bonjour, quand tu écris "tout en lui donnant un nom moi même", qui est "moi-même": le programme, ou l'utilisateur? souhaites-tu ouvrir une boite de dialogue permettant à l'utilisateur de choisir le nom de destination?

alors:
Dim destfilename
destfilename = Application.GetSaveAsFilename(ThisWorkbook.Path, "Excel xlsx Files,*.xlsx")
If destfilename <> False Then
    ActiveWorkbook.SaveCopyAs destfilename
Else
    ' "CANCELLED"
End If
1
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020
4 mai 2020 à 11:49
Bonjour,
Par "moi-même" je pensais à l'ouverture d'une boite de dialogue où le nom du fichier serait rentré par l'utilisateur .
0
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020
4 mai 2020 à 12:27
Après petit test cela fonctionne j'ai bien mon fichier où je souhaite et il est crée mais impossible de l'ouvrir il me dit que "l’extension ou le format n'est pas valide".
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474 > daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020
4 mai 2020 à 12:56
en effet, SaveCopyAs ne change pas le type de fichier.
0
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
5 mai 2020 à 15:51
Au final même il y a un petit couac je pense trouver une application a ceci merci encore
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
4 mai 2020 à 13:03
Bonjour,

comme ceci:

Dim destfilename
destfilename = Application.GetSaveAsFilename(ThisWorkbook.Path, "Excel xlsx Files,*.xlsx")
If destfilename <> False Then
ActiveWorkbook.SaveAs Filename:= _
        destfilename, FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
Else
    ' "CANCELLED"
End If

1
daniel_1912 Messages postés 12 Date d'inscription vendredi 28 février 2020 Statut Membre Dernière intervention 3 juin 2020
5 mai 2020 à 15:52
Ha super ce code marche du tonnerre de Brest Merci beaucoup !
0