Sauvegarder sous "nom du fichier"

Zlopeck

XLDnaute Junior
Bonjour à toutes et tous

Pour enregistrer un fichier j'utilise le code suivant collé dans Workbook:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="D:\SAUVEGARDE\COMPTES\comptes 2010.xlsb"
ActiveWorkbook.SaveAs Filename:="Z:\COMPTES\comptes 2010.xlsb"
Application.DisplayAlerts = True
End Sub

Il fonctionne parfaitement mais j'aurais aimé pouvoir remplacer automatiquement "comptes 2010.xlsb" par le nouveau nom du fichier, à savoir "comptes 2011.xlsb" sans avoir à intervenir au niveau du code à chaque changement de nom.
J'ai hélas eu la désagréable expérience d'un tel fichier écrasé parce que j'avais totalement oublié d'intervenir au niveau du code de sauvegarde.
Ma question est donc : Par quoi remplacer la partie du code "comptes 2010.xlsb" pour obtenir " "D:\SAUVEGARDE\COMPTES\"nom du fichier".xlsb"
Merci d'avance pour votre aide
 

néné06

XLDnaute Accro
Re : Sauvegarder sous "nom du fichier"

Bonsoir Zlopeck

Je suis sur le un programme sensiblement identique ,je pense
et j'ai procédé ainsi .
regarde si tu peux en tirer quelque chose.

' SauvegarderClasseurActifSous le nom 2009()
Dim NomClasseur As String
'Saisie du nom du classeur à sauvegarder
NomClasseur = ActiveWorkbook.FullName
nom1 = ActiveWorkbook.FullName
'Enregistre les classeurs sous les noms prevus
'classeur 2010
nom = Mid(NomClasseur, 1, Len(NomClasseur) - 9) + CStr(annee_presente) + ".xlsb"
Application.DisplayAlerts = False
'sauve classeur sous 2009
ActiveWorkbook.SaveAs Filename:=nom1
'sauve classeur sous 2010
ActiveWorkbook.SaveAs Filename:=nom
'*****************************************************
'les classeurs2009 et 2010 sont identiques et sauvés
'******************************************************
ActiveWorkbook.SaveAs Filename:=nom
Application.DisplayAlerts = True

A+
 

job75

XLDnaute Barbatruc
Re : Sauvegarder sous "nom du fichier"

Bonsoir Zlopeck, néné06,

S'il n'y a qu'un seul point dans le nom complet du fichier :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim nom As String
nom = Split(Me.Name, ".")(0) 's'il y a un seul point dans le nom complet
Application.DisplayAlerts = False
Me.SaveAs Filename:="D:\SAUVEGARDE\COMPTES\" & nom & ".xlsb"
Me.SaveAs Filename:="Z:\COMPTES\" & nom & ".xlsb"
Application.DisplayAlerts = True
End Sub

Il a l'avantage de fonctionner aussi bien sur Excel 2007 (.xlsm) que sur Excel 2003 (.xls).

Edit : remplacé ActiveWorkbook par Me, ça paraît plus logique...

A+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Sauvegarder sous "nom du fichier"

Bonsoir à tous, le fil, le forum


Histoire de saluer Job75 ;)
(test OK sur XL2010)
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim nom As String
nom = "\COMPTES\" & Split(Me.Name, ".")(0) 's'il y a un seul point dans le nom complet
Application.DisplayAlerts = False
Me.SaveAs "D:\SAUVEGARDE" & nom , 50
Me.SaveAs "Z:" & nom , 50
Application.DisplayAlerts = True
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Sauvegarder sous "nom du fichier"

Bonsoir Jean-Marie,

J'ai essayé d'utiliser la macro de mon post #3 sous Excel 2003 (ma version d'Excel).

Vers l'extension .xlb ou .xla.

Excel 2003 plante systématiquement, et je ne sais pas pourquoi.

Tu as une idée ??

A+
 

Staple1600

XLDnaute Barbatruc
Re : Sauvegarder sous "nom du fichier"

Bonsoir job75

Bonsoir Jean-Marie,
Vers l'extension .xlb ou .xla.

Tu veux dire xlsb ?
Excel 2003 ne connait pas

Voir dans l'aide VBA
Énumération XlFileFormat
Indique le format de fichier à utiliser pour l'enregistrement de la feuille de calcul.
Nom_____________Valeur ___________Description
xlExcel12________ 50 _____________Excel12

Si tu essayes:
xlAddIn__________ 18 _____________Complément Microsoft Excel 97-2003
xlExcel8__________ 56 _____________Excel8
Il se passe quoi ?

PS: xlb, c'est pour Excel.xlb
Le fichier Excel.xlb stocke des informations sur les modifications de menu, les autres types de modifications et les menus personnalisés.
source
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Sauvegarder sous "nom du fichier"

Bonjour le fil, le forum,

Merci Jean-Marie, mais j'essayais simplement d'adapter la macro de Zlopeck à Excel 2003, et ça ne marche pas...

Pour déterminer le nom du fichier sans l'extension, on peut aussi utiliser la méthode GetBaseName.

Sur la macro de Zlopeck cela donne :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim oFSO As Object, nom As String
Set oFSO = CreateObject("Scripting.FileSystemObject")
nom = oFSO.GetBaseName(Me.Path & "\" & Me.Name) 'nom du fichier sans l'extension
Application.DisplayAlerts = False
Me.SaveAs Filename:="D:\SAUVEGARDE\COMPTES\" & nom & ".xlsb"
Me.SaveAs Filename:="Z:\COMPTES\" & nom & ".xlsb"
Application.DisplayAlerts = True
Set oFSO = Nothing
End Sub

Edit : je crois que ce code devrait fonctionner aussi :
Code:
nom = oFSO.GetBaseName(Me.Name) 'nom du fichier sans l'extension
A+
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
326

Statistiques des forums

Discussions
312 496
Messages
2 088 980
Membres
103 997
dernier inscrit
SET2A