Sauvegarder sous un fichier Excel au fiormat sans macros

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

richert90

XLDnaute Occasionnel
Bonjour le forum!
J'ai un petit problème:
Dans un classeur Excel, j'ai un bouton qui permet à un utilisateur de sauvegarder son fichier au format .xlsx (sans macros) mais une fois cette sauvegarde réalisée, je veux qu'on soit de nouveau sur le fichier initial.

Voici le code que j'avais:
Code:
'Récupération du chemin contenant le répertoire où on enregsitrera les analyses:
    chemin_sauvegarde = LireIni("SAVING", "dir") 'On récupère le chemin du répertoire où seront stockées les analyses
    
    On Error Resume Next
        ChDir chemin_sauvegarde 'test de l'existence du répertoire renseigné dans fichier de config.
        If err Then
            MsgBox ("The path specified in the configuration file is empty or doesn't exist")
            'On met en place une applcation pour que l'utilisateur puisse choisir le répertoire ici même:
                Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
                Repertoire.Title = "Select the directory where you want to save a copy" 'Titre de la fenêtre
                Repertoire.Show 'On affiche la fenêtre
                chemin_sauvegarde = Repertoire.SelectedItems(1) 'Nouveau chemin!
                ChDir chemin_sauvegarde
             'Si il annule:
            If Repertoire.SelectedItems(1) = "" Then Exit Sub
        End If
        
    On Error GoTo 0


'----------------------------------- On enreigstre la copie----------------------------------------------------
  
    nb = nbfich(chemin_sauvegarde, "xlsx") 'On compte le nb de fichiers déjà sauvegardés
    nb = nb + 1
    
    nom1 = "Analysis (" & nb & ") of " & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
    
    ActiveWorkbook.SaveAs chemin_sauvegarde & "\" & nom1, FileFormat:=xlOpenXMLWorkbook 'Sauvegarde
    ActiveWindow.Close
    rep = MsgBox("Your analysis is saved under the name : " & nom1, vbYes + vbInformation, "Copy of analysis") ' message d'info

Le problème c'est que quand la copie est enregistrée, mon classeur sur lequel j'étais a été modifié: il porte le nom de la sauvegarde, en fait c'est un sauvegarder sous et du coup je ne suis plus sur le fichier du début...

ce que je souhaite en fait c'est:
1) nous sommes sur notre fichier avec macros "TEST.XLSM"
2) On créer une sauvegarde de ce fichier appelée "ANALYSIS 1.XLSX" mais on ne l'ouvre pas
3) On est de nouveau sur "TEST.XLSM" et on peut continuer notre travail
4) et ainsi de suite..

Merci de votre aide!
 
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Le "SaveCopyAs" ne peut sauvegarder qu'avec l'extension par défaut de l'application utilisée non?
Et moi depuis mon application avec macros, je veux enregistrer une copie au format .xlsx (sans macros), donc du coup ça marche pas?!
 
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Bonjour richert90, Papou-net,

Code:
Sub CreerFichierXLSX()
Dim NomComplet$, NomSansExtension$
NomComplet = ThisWorkbook.FullName
NomSansExtension = Left(NomComplet, InStrRev(NomComplet, ".") - 1)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs NomSansExtension, 51 'format .xlsx
Workbooks.Open NomComplet
ThisWorkbook.Close
End Sub
A+
 
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Re,
Ca marche bien mais un petit truc me pose soucis:
C'est la ligne
Code:
Workbooks.Open NomComplet
qui permet de réouvrire le fichier courant.
Le problème c'est qu'il y a des procédures qui s'exécute à l'ouverture...
Ce que je souhaite c'est juste le laisser ouvert et qu'il ne soit pas modifié (et donc qu'il ne revienne pas à "son état d'ouverture"),
c'est possible?
Sinon concernant le format (sans macros), c'est exactement cela que je souhaite.
 
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Bonjour richert90, salut Pierrot,

Noter aussi qu'en rouvrant le fichier source les modifications sont perdues si elles n'ont pas été enregistrées.

Donc on peut utiliser :

Code:
Sub CreerFichierXLSX()
Dim NomComplet$, NomSansExtension$
NomComplet = ThisWorkbook.FullName
NomSansExtension = Left(NomComplet, InStrRev(NomComplet, ".") - 1)
Application.DisplayAlerts = False
Application.EnableEvents = False
If Not ThisWorkbook.Saved Then ThisWorkbook.Save
ThisWorkbook.SaveAs NomSansExtension, 51 'format .xlsx
Workbooks.Open NomComplet
Application.EnableEvents = True
ThisWorkbook.Close
End Sub
A+
 
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Re,

Oui bon, vous êtes têtu, on vous a dit que le code désactive les macros événementielles !!!

Vérifiez avec le fichier joint.

J'ai complété la macro pour le cas où le fichier .xlsx serait ouvert :

Code:
Sub CreerFichierXLSX()
'se lance par les touches Ctrl+A
Dim NomComplet$, NomSansExtension$
NomComplet = ThisWorkbook.FullName
NomSansExtension = Left(NomComplet, InStrRev(NomComplet, ".") - 1)
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
Workbooks(Dir(NomSansExtension & ".xlsx")).Close 'si ce fichier est ouvert
If Not ThisWorkbook.Saved Then ThisWorkbook.Save
ThisWorkbook.SaveAs NomSansExtension, 51 'format .xlsx
Workbooks.Open NomComplet
Application.EnableEvents = True
ThisWorkbook.Close
End Sub
A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour