Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Anna_2013

XLDnaute Junior
Bonsoir,

Je n'arrive pas à trouver mon erreur dans la macro syntaxe ( en bleu) suivante.
Je souhaite en effet enregistrer mon fichier xlsm dans le meme répertoire en XLSX mais que cela reste dynamique c'est à dire que le chemin du répertoire soit automatisé et que le nom du classeur excel à sauvegarder en xlsx soit repris automatiquement. J'en ai 60 à enregistrer d'xlsm à xlsx.
Merci par avance pour votre aide,
Anna
Sub XLSXSave()
Application.DisplayAlerts = False
Dim Fichier As String
Fichier = ThisWorkbook.FullName
With ActiveWorkbook
.SaveAs FileName:=ThisWorkbook.Path & "\" & Fichier, FileFormat:=xlOpenXMLWorkbook
End With
Dim wb As Workbook
For Each wb In Workbooks 'boucle sur tous les classeurs ouverts
wb.Close True 'fermeture du classeur avec sauvegarde
Next
ActiveWorkbook.Close
Application.Quit
Application.DisplayAlerts = True
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonsoir Anna_2013.


Essayez ceci :​
VB:
Sub XLSXSave()
  Application.DisplayAlerts = False
Dim Fichier As String
  Fichier = Split(ThisWorkbook.Name, ".")(0)
  With ActiveWorkbook
    .SaveAs Filename:=ThisWorkbook.Path & "\" & Fichier, FileFormat:=xlOpenXMLWorkbook
  End With
Dim wb As Workbook
  For Each wb In Workbooks
    wb.Close True
  Next
  ActiveWorkbook.Close
  Application.Quit
  Application.DisplayAlerts = True
End Sub


Bonne nuit.


ℝOGER2327
#6993


Vendredi 20 As 141 (Saint Olibrius, augure - fête Suprême Quarte)
2 Frimaire An CCXXII, 9,5933h - turnep
2013-W47-5T23:01:26Z
 

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonsoir,
Je vous remercie énormément pour votre aide.
Cependant quand le fichier est copier en xlsx il ne reprend pas le nom du fichier mais que .0 de la syntaxe.
Cela ne me permet pas de copier et enregistrer les 77 autres fichiers excel que je dois sauvegarder en xlsx.
Je souhaiterais que la syntaxe de la formule reprenne d'elle même en automatique le nom du fichier en l'enregistrant par exemple 0.Bilan, 1.Compte de résultat.
Etant débutante je ne parviens pas à le faire.
Merci
 

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonjour,

J'ai essayé de remodifier le format de la syntaxe mas j'ai encore le pblm à partir de .save asfile et de END With (en bleu).

Merci par avance pour votre aide,


Sub XLSXSave()
Dim wb As Workbook
Dim Fichier As String

Application.DisplayAlerts = False
Fichier = ThisWorkbook.FullName
With ActiveWorkbook
.SaveAs Filename:=ThisWorkbook.Path & "\" & FileFormat, FileFormat:=xlsx
End With
For Each wb In Workbooks
wb.Close True
Next
ActiveWorkbook.Close
Application.Quit
Application.DisplayAlerts = True
End Sub
 

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonjour ,

Merci pour votre réponse.

J'ai modifié comme indiqué ma syntaxe avec Fichier mais cela ne fonctionne toujours pas.
Je vous joins le fichier test avec la macro.
Etant débutante je n'arrive pas à solutionner la sauvegarde automatique en xlsx.
J'ai 70 fichiers excels à enregistrer de cette manière de xlsx vers xlsm.

Merci pour votre aide,
 

Pièces jointes

  • 0.Test.xlsm
    19.2 KB · Affichages: 82

Staple1600

XLDnaute Barbatruc
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Re

Essayes ceci pour convertir en une seule fois les xlsm d'un répertoire donné
(Mettre ce code dans un classeur qui ne trouve pas dans le dossier à traiter)
Change le nom du dossier avant de lancer la macro
(à la place de C:\TEMP\ sans oublier le \ final)
Code testé sur mon PC. OK
Code:
Sub XLSMToXLSX()
Dim Chemin$, Fichier$, NFic$
Application.DisplayAlerts = False
Chemin = "C:\TEMP\" ' nom dossier à adapter
Fichier = Dir(Chemin & "*.xlsm")
Do While Fichier <> ""
    Workbooks.Open Filename:=Chemin & Fichier
    NFic = Replace(ActiveWorkbook.Name, ".xlsm", "")
    ActiveWorkbook.SaveAs Filename:=Chemin & NFic & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWorkbook.Close
Fichier = Dir
Loop
Application.DisplayAlerts = True
End Sub
 
Dernière édition:

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonsoir,
Je vous remercie pour votre aide,
Sauriez vous cependant comment je peux activer cette macro pour enregistrer tous les excels du répertoire dossier en xlsx?

je ne sais pas le faire ;(

Merci bcp

Anna
 

Staple1600

XLDnaute Barbatruc
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonsoir à tous

Anna_2013
Il faut modifier la variable Chemin en indiquant le nom du dossier contenant tes fichiers *.xlsm
ensuite pour lancer la macro il suffit de faire Outils/Macros/XLSMTOXLSX -> Exécuter

PS: Il faut mettre le code dans un classeur
(qui ne sera pas enregistré dans le répertoire contenant les *.xslm à convertir en *.xlsx)

Tu sais comment copier une macro dans Excel?
 
Dernière édition:

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Bonsoir,

J'ai mon répertoire (dossier) appeler Excel dans lequel figurent les 70 fichiers excels.
J'ai créé un classeur test dans lequel j'ai inséré votre macro en changeant le chemin du répertoire E:\C&\Etats\Excels.

Cependant lorsque je lance cette macro elle ne fonctionne pas aucun des 70 fichiers xlsm ne sont convertis en xlsx.

Pourriez vous svp m'indiquer où est mon erreur?

Par avance merci pour votre aide
 

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

J'ai un message qui apparait avertissement concernant la confidentialité du document : ce document contient des macros qui ne peuvent pas être supprimées par l'Inspecteur de document. J'ai suivi vos indications mais aucun fichier ne se duplique dans le nouveau répertoire
 

Staple1600

XLDnaute Barbatruc
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

RE


J'ai mon répertoire (dossier) appeler Excel dans lequel figurent les 70 fichiers excels.
J'ai créé un classeur test dans lequel j'ai inséré votre macro en changeant le chemin du répertoire E:\C&\Etats\Excels.
Il se nomme Excel ou Excels ton dossier ?
Et tu as changé ainsi ?
Chemin="E:\C&\Etats\Excels\"

Sinon tu peux aussi pour tester créer un dossier C:\TEMP et y copier quelque uns de tes *.xlsm
puis lancer la macro, normalement ça doit fonctionner
(cela fonctionne chez moi)
 
Dernière édition:

Anna_2013

XLDnaute Junior
Re : Sauvegarde par VBA de xlsx à xlsm en automatisant nom du fichier

Est ce que vous pouvez me confirmer que j'ai bien compris la démarche :

1. Je crèe un nouveau répertoire ou seront logés le fichiers en xlsx. Dans ce répertoire, j'ai le classeur qui contient votre macro que je vais activer.
2. Le dossier / répertoire dans lequel sont logés les fichiers en xlsm ne contient pas le classeur avec la macro conversion xlsm a xlsx
3. Dois je fermer le répertoire des classeurs xlsm quand je lance la macro contenu dans l'autre répertoire pr la sauvegarde en xlsx?
Merci pour votre aide,
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 328
Membres
103 180
dernier inscrit
Vcr