[VBA] Sauvegarde de mon classeur xltm dans un répertoire de sauvegarde
Le
Emile63

Bonjour à tous,
Je souhaite sauver (régulièrement) mon classeur "Modèle" avec macros =
sous sa forme originale (xltm), et non pas sous l'enregistrement par défa=
ut: xlsx
'--
Dim NomSauve As String
On Error Resume Next
With Application
.StatusBar = "Exécution de macro"
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
.DefaultSaveFormat = xlTemplate ' xltm
End With
NomSauve = "C:UsersSave" & "Save_" & ActiveWorkbook.Name
ThisWorkbook.SaveCopyAs Filename:=NomSauve
With Application
.StatusBar = False
.EnableEvents = True
.DefaultSaveFormat = xlNormal 'retour au normal
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
'--
Cette proc. ne fonctionnant pas, je m'en remets à votre aide et suggestio=
ns.
En vous remerciant d'avance,
cordialement
Emile
Je souhaite sauver (régulièrement) mon classeur "Modèle" avec macros =
sous sa forme originale (xltm), et non pas sous l'enregistrement par défa=
ut: xlsx
'--
Dim NomSauve As String
On Error Resume Next
With Application
.StatusBar = "Exécution de macro"
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
.DefaultSaveFormat = xlTemplate ' xltm
End With
NomSauve = "C:UsersSave" & "Save_" & ActiveWorkbook.Name
ThisWorkbook.SaveCopyAs Filename:=NomSauve
With Application
.StatusBar = False
.EnableEvents = True
.DefaultSaveFormat = xlNormal 'retour au normal
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
'--
Cette proc. ne fonctionnant pas, je m'en remets à votre aide et suggestio=
ns.
En vous remerciant d'avance,
cordialement
Emile
"SaveCopyAs" ne peut pas changer le type du classeur. Utilise "SaveAs"
Cordialement.
Daniel
'--------------------------------------------
Sub test()
Dim NomSauvegarde As String
Dim TypeFile As XlFileFormat
'En utilisant des variables au début de la procédure, cela
'facilite l'entretien des macros si un jour tu dois modifier
'la valeur d'une ce ces variables.
'Tu veux voir tous les formats disponibles...
'Sélectionne le symbole "=" de la ligne suivante et tape
'à nouveau le signe "=", tu auras droit à une liste déroulante
'affichant tous les formats possibles!
TypeFile = xlOpenXMLTemplateMacroEnabled
NomSauvegarde = "c:UsersMichDDocumentsMonFichier.xltm"
'Depuis Excel 2007, si tu utilises la méthode "Save" ou "SaveAs",
'Tu dois définir le paramètre FileFormat, tu n'as pas besoin
'de modifier la valeur par défaut dans les options d'Excel.
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=NomSauvegarde, FileFormat:=TypeFile
Application.DisplayAlerts = True
End Sub
'--------------------------------------------
Et merci pour vos solutions.
MichD,
J'ai bien compris l'idée, mais ça coince quelque part...
Quand je recherche le fichier à travers l'explorateur, il appairait bien avec la bonne extension, mais (étrangement) il ne pèse que 177ko au lie u des 600 ko de l'original et d'autre part, quand je le double clic ou tent e de l'ouvrir, un message m'indique qu'il est impossible d'ouvrir une copie tant que le modèle "xxx" est ouvert, alors qu'il est bien fermé. Y co mpris quand Excel est complètement fermé.
DanielCo,
En remplaçant SaveCopyAs par SaveAs, ça ne fonctionne pas mieux.
Un message d'erreur d'exécution 1004 m'indique qu'il est impossible d'uti liser cette extension avec le type de fichier sélectionné.
Modifiez l'extension du fichier etc.....
En vous remerciant d'avance si vous avez une autre suggestion. :-)
Très bonne journée,
Cordialement,
Emile
Je t'ai dit :
C'était évidemment pour te permettre de changer le type du fichier.
Daniel
La macro que je t'ai fournie fonctionne. Évidemment elle utilise "SaveAs".
Si tu veux retrouver le fichier original à l'écran après avoir
enregistré une copie de sauvegarde, essaie ceci :
'-------------------------------------------------------
Sub test()
Dim NomSauvegarde As String, Wk As Workbook
Dim TypeFile As XlFileFormat, X As String
'En utilisant des variables au début de la procédure, cela
'facilite l'entretien des macros si un jour tu dois modifier
'la valeur d'une ce ces variables.
'Tu veux voir tous les formats disponibles...
'Sélectionne le symbole "=" de la ligne suivante et tape
'à nouveau le signe "=", tu auras droit à une liste déroulante
'affichant tous les formats possibles!
TypeFile = xlOpenXMLTemplateMacroEnabled
NomSauvegarde = "c:UsersMichDDocumentsMonFichier.xltm"
'Depuis Excel 2007, si tu utilises la méthode "Save" ou "SaveAs",
'Tu dois définir le paramètre FileFormat, tu n'as pas besoin
'de modifier la valeur par défaut dans les options d'Excel.
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With ThisWorkbook
'Mets dans une variable chemin et nom du fichier en cours
X = ThisWorkbook.FullName
'sauvegarde avant de faire l'enregistrement sous format modèle
.Save
'sauvegarde la copie du fichier au titre de modèle
.SaveAs Filename:=NomSauvegarde, FileFormat:=TypeFile
End With
'Après sauvegarde, c'est le fichier modèle qui est le
'fichier actif à l'écran
Set Wk = ThisWorkbook
'Ouverture du fichier originale
Workbooks.Open X
'Fermeture du fichier modèle
Wk.Close
'Libération de la mémoire occupée par l'objet Wk
Set Wk = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = False
End Sub
'-------------------------------------------------------
MichD
MichD:
Avec cette nouvelle mouture, ca plante toujours à ce niveau là:
.SaveAs Filename:=NomSauvegarde, FileFormat:=TypeFile
Même type de msg que décrit auparavant, Et je suis bien sous XL 2007
Je vais laisser tomber pour ce soir, peut-être que demain ca ira mieux :- )
Merci pour votre aide et bonne soirée.
Cordialement,
Emile
aucun problème particulier.
Je te fais remarquer que la valeur de cette variable :
NomSauvegarde = "c:UsersMichDDocumentsMonFichier.xltm"
J'espère que tu as adapté le chemin et le nom du fichier selon ton
application. Le copier-coller n'est pas suffisant, il faut prendre le
temps de lire la procédure et de l'adapter le cas échéant.
La version d'Excel n'est pas citée
mais je suppose que c'est au moins 2007 ;o)
Dans l'énumération des valeurs de XlFileFormat
je vois (msdn) xlWorkbookNormal mais pas xlNormal
(c'est pour 2013 et au delà ;o)
Par ailleurs, je ne comprends pas pourquoi
modifier le format par défaut.
La méthode saveAs permet aussi de choisir le format :
https://msdn.microsoft.com/fr-fr/library/office/ff841185.aspx
Il me semble que ce serait plus naturel.
... ou alors je n'ai pas compris la demande ...
... ce qui est possible ;o)
Cordialement,
HB
Le 03/03/2016 14:48, Emile63 a écrit :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
À cette adresse, la liste des formats de fichier d'Excel 2007.
https://msdn.microsoft.com/en-us/library/bb241279(v=office.12).aspx
Sauf erreur, je n'ai pas vu le format "XlNormal".
Pour ce qui est des versions plus anciennes, ce format existait
peut-être, mais je ne peux pas vérifier et Microsoft ne supporte plus
cette version d'Excel.
Il est hautement probable que le message d'origine
ne concerne pas une version très ancienne
sinon le format xltm n'existerait pas ;o)
(y'a qqchose entre 2003 et 2007 ?)
Donc, dans la macro,
il faut sans doute changer xlnormal en xlWorkbookNormal.
Reste à savoir pourquoi l'auteur (Emile63)
n'utilise pas les possibilités de SaveAs
pour imposer simplement
un changement de format.
Cordialement,
HB
Le 04/03/2016 00:13, MichD a écrit :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus