Enregistrer sous en conservant le fichier source ouvert

Re Bonjour à tous,

J'avance sur ma matrice et je bloque sur des détails.

J'ai écris un code pour "enregistrer sous" mon classeur actif.

Le classeur actif doit rester actif et l'enregistrement ne doit pas rester ouvert.

Voici le code :

Sub EnregistreExcel()

'

' Macro pour enregister l'étude

Dim Name As String

Dim NomFichier As String

Dim chemin As String

Dim Sep As String

chemin = "C:\Users\DPCI\OneDrive - CTGAZ\Bureau\CICM\02 ETUDES CICM"

Sep = Application.PathSeparator

NomFichier = "CTGAZ - Etude CICM - " & Sheets("PARAMETRAGE").Range("C31") & ".xlsx"

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:=chemin & Sep & NomFichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Sheets("PARAMETRAGE").Visible = False

Application.DisplayAlerts = True

End Sub

Mon problème est que le fichier source se ferme et que le fichier enregistré sous reste ouvert.

Comment faire pour que ce soit l'inverse?

merci d'avance pour votre aide,

Jen

Bonjour,

Le fait de vouloir utiliser l'option "enregistrer sous" ne ferme pas le classeur d'origine ; il devient le fichier actuel qui est la copie

Je pense que la seule solution serait une macro qui "duplique les onglets" dans un nouveau fichier qui lui serait enregistré sous…

Re,

Pourquoi ne pas, tout simplement, fermer la copie et ouvrir à nouveau l'original ?!...

Merci pour ton retour.

Le pb c'est que le fichier peut changer... les feuilles à copier ne sont pas tjs les mêmes

ThauThème,

Oui ce serait une solution en effet. Mais ce n'est pas le but recherché.

Nous faisons une 15zaines d'études par jour et cette manipulation supplémentaire nous ferait perdre du temps (les études prenant déjà 1h à 1h30). D'où la création d'une matrice

Re,

T'es à ce point pressé !?...

Sub EnregistreExcel()

Dim CS As Workbook
Dim NC As String
Dim NomFichier As String
Dim chemin As String
Dim Sep As String

Set CS = ThisWorkbook
NC = CS.FullName
chemin = "C:\Users\DPCI\OneDrive - CTGAZ\Bureau\CICM\02 ETUDES CICM"
Sep = Application.PathSeparator
NomFichier = "CTGAZ - Etude CICM - " & Sheets("PARAMETRAGE").Range("C31") & ".xlsx"

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=chemin & Sep & NomFichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Sheets("PARAMETRAGE").Visible = False
Application.DisplayAlerts = True
ActiveWorkbook.Close True
Application.Workbooks.Open NC
End Sub

Re j'avais à peu prés la même Thautheme

Sub EnregistrerCopie()
Dim memPath As String
    'enregistrer d'abord les modifications apportées au classeur actuel
    ThisWorkbook.Save
    'mémoriser le path du classeur actuel
    memPath = ThisWorkbook.FullName
    '"enregistrer sous" le classeur (faire une copie)
    ThisWorkbook.SaveAs "C:\test.xlsm"..... ton code et option d'enregistrement sous

    'ouvrir l'ancien classeur (celui d'avant l'"enregistrer sous")
    Application.Workbooks.Open memPath
    'fermer ce classeur (la copie)
    ThisWorkbook.Close False
End Sub

@ Xmenpl

Le code fonctionne mais ferme tout sauf l'application Excel.

@ ThauThème

Le code ferme le fichier Matrice et pas le fichier généré et j'ai une fenetre qui me demande de confirmer l'enregristrement (comme quand on ferme sans enregistrer)

Je ne peux plus ouvrir mon fichier Matrice, Excel ne reconnait plus l'extention...

C'est bon fichier récupéré...

Re,

Oui tu as raison les deux dernière lignes du codes étaient inversées.

Sub EnregistreExcel()

Dim CS As Workbook
Dim NC As String
Dim NomFichier As String
Dim chemin As String
Dim Sep As String

Application.ScreenUpdating = False
Set CS = ThisWorkbook
NC = CS.FullName
chemin = "C:\Users\DPCI\OneDrive - CTGAZ\Bureau\CICM\02 ETUDES CICM"
Sep = Application.PathSeparator
NomFichier = "CTGAZ - Etude CICM - " & Sheets("PARAMETRAGE").Range("C31") & ".xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=chemin & Sep & NomFichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Sheets("PARAMETRAGE").Visible = False
Application.DisplayAlerts = True
Application.Workbooks.Open NC
ActiveWorkbook.Close True
Application.ScreenUpdating = True
End Sub

Désolée mais ça ne laisse ouvert que le fichier enregistré sous au lieu de la matrice

Re,

Décidément ! Ça marchait chez moi... Essaie comme ça :

Sub EnregistreExcel()

Dim CS As Workbook
Dim NC As String
Dim FC As Workbook
Dim NomFichier As String
Dim chemin As String
Dim Sep As String

Set CS = ThisWorkbook
NC = CS.FullName
chemin = "C:\Users\DPCI\OneDrive - CTGAZ\Bureau\CICM\02 ETUDES CICM"
Sep = Application.PathSeparator
NomFichier = "CTGAZ - Etude CICM - " & Sheets("PARAMETRAGE").Range("C31") & ".xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=chemin & Sep & NomFichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Set FC = ActiveWorkbook
FC.Sheets("PARAMETRAGE").Visible = False
Application.DisplayAlerts = True
Application.Workbooks.Open NC
FC.Close True
End Sub

Pourtant j'ai fait un copier/collrt de ton code :

Sub EnregistreExcel()

Dim CS As Workbook

Dim NC As String

Dim NomFichier As String

Dim chemin As String

Dim Sep As String

Application.ScreenUpdating = False

Set CS = ThisWorkbook

NC = CS.FullName

chemin = "C:\Users\DPCI\OneDrive - CTGAZ\Bureau\CICM\02 ETUDES CICM"

Sep = Application.PathSeparator

NomFichier = "CTGAZ - Etude CICM - " & Sheets("PARAMETRAGE").Range("C33") & ".xlsx"

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:=chemin & Sep & NomFichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Sheets("PARAMETRAGE").Visible = False

Application.DisplayAlerts = True

Application.Workbooks.Open NC

ActiveWorkbook.Close True

Application.ScreenUpdating = True

End Sub

Re,

Voir mon post précédent...

C'est parfait merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

C'est pas à cause du

Application.Workbooks.Open NC qui devient le fichier actif ?

Mais comme tu avais déjà récupéré le nom de la copie dans la variable "NomFichier"alors peut-être avec un:

Workbooks(NomFichier).Close SaveChanges:=False

oops Edit autant pour moi j'aurai vraiment pensé qu'après le open c'était NC qui était le classeur actif

Re,

Oui c'est une autre possibilité. En rajoutant l'extension...

Rechercher des sujets similaires à "enregistrer conservant fichier source ouvert"