Sauvegarder sous un fichier Excel au fiormat sans macros

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!
 

richert90

XLDnaute Occasionnel
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?!
 

job75

XLDnaute Barbatruc
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+
 

richert90

XLDnaute Occasionnel
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.
 

Pierrot93

XLDnaute Barbatruc
Re : Sauvegarder sous un fichier Excel au fiormat sans macros

Bonjour à tous,

désactive et réactive les événementielles...
Code:
Application.EnableEvents = False
Workbooks.Open NomComplet
Application.EnableEvents = True
bonne journée
@+
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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

  • XLSX(1).xlsm
    16.8 KB · Affichages: 38
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
283 682
Messages
1 853 490
Membres
152 184
dernier inscrit
LegVal10
Haut Bas