Fichier de sauvegarde en temps réel d'un xlsm vers un xlsx

Bonjour à tous,

J'ai une question, j'ai un fichier excel partagé avec beaucoup de feuilles et de macros, que l'ensemble des collaborateurs utilisent pour renseigner leurs activités. Ce fichier est donc en .xlsm

J'aimerais avoir un fichier de sauvegarde, qui copie l'ensemble du fichier en question mais en .xlsx

Ou plutôt j'aimerais que lorsqu'il y a des modifications dans mon fichier de base (xlsm), celles-ci soient prise en compte par le fichier de sauvegarde (xlsx donc sans macros).

Mon but serait d'avoir une sauvegarde dans un premier temps,

Et dans un second temps, que notre directeur puisse avoir accès aux données du fichier base via le fichier de sauvegarde depuis son Mac... (aujourd'hui notre directeur est obligé d'utilisé un PC de la société pour avoir accès au fichier de base car entre les macros du fichier et son Mac, il y a comme un souci... surement des fonctions DirectX qui sont incompatible avec Mac)

C'est pourquoi je voudrais avoir un fichier de sauvegarde en xlsx d'un fichier en xlsm.

Je sais pas si j'ai été assez clair, mais merci d'avoir pour votre aide.

Bonjour,

voici un exemple de sauvegarde d'un fichier .xlsm en .xlsx

Sub CopieDeSauvegarde()
wk = ActiveWorkbook.Name
LeNom = Left(wk, Len(wk) - 5) & " (copie de sauvegarde)" & ".xlsx"
ActiveWorkbook.SaveCopyAs "C:\Users\isabelle\Documents\SAUVEGARDE\" & LeNom  'à adapter
End Sub

Bonjour i20100,

Meric pour votre aide. Mais j'ai un souci avec votre code, celui-ci me crée bien un fichier de sauvegarde en xlsx mais lorsque je veut l'ouvrir, j'ai le message d'erreur suivant qui apparait:

"Impossible d'ouvrir le fichier "blabla.xlsx" car son format ou extension n'est pas valide. Vérifiez que le fichier n'est pas endommagé et que son extension correspond bien au format du fichier."

Sinon j'ai fais quelques recherches de mon coter aussi et je suis tomber sur cela que j'ai adapté :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"T:\AFFAIRES\10 PLANNING\en cour de modif\Test\blabla.xlsm" _
, FileFormat:=xlWorkbookDefault, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

Et dans blabla.xlsm il est bien en xlsm en effet mais avec juste un simple bout de code pour faire apparaitre toutes les feuilles à l'ouverture du fichier, et ce code ne bloque pas le excel pour Mac après avoir fait un essaie. Seul hic que j'ai... j'aimerais rajouter un mot de passe sur le fichier blabla.xlsm pour empêcher que des petits malins y aillent.

J'ai donc mit un mot de passe sur le classeur, mais mon code ne fonctionne plus du coup, j'ai essayé de le modifier de cette façon:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"T:\AFFAIRES\10 PLANNING\en cour de modif\Test\blabla.xlsm", Password:="boby" _
, FileFormat:=xlWorkbookDefault, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

ou encore

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"T:\AFFAIRES\10 PLANNING\en cour de modif\Test\blabla.xlsm", WriteResPassword:="boby" _
, FileFormat:=xlWorkbookDefault, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

Mais ça ne fonctionne pas quelqu'un aurait-il une solution à me proposer?

Bon alors enfaite j'ai un double problème...

Si je fais une sauvegarde de mon fichier en xlsx j'ai mes feuilles qui sont cachés.... et je ne peux plus les voir sauf en faisant un bout de code en VBA se qui implique d’être en xlsm...

j'ai besoin de ce code pour voir mes feuilles une fois l'enregistrement effectuer :

Option Explicit

Sub Essai()
  Dim FX As Worksheet: Application.ScreenUpdating = False
  For Each FX In Worksheets: FX.Visible = True: Next FX
End Sub

ou celui-la :

Sub AfficheOnglets()

Dim Onglets As Worksheet

For Each Onglets In Worksheets
Onglets.Visible = True
Next Onglets

End Sub 

Du coup je me retrouve dans l'obligation de faire un fichier de sauvegarde en xlsm visiblement.... et j'aimerais que celui-ci soit protéger par un mot de passe... quelqu'un a une idée?

re,

tu pourrais faire une copie des onglet dans un nouveau classeur et enregistrer celui-ci,

voici un exemple,

Set wk = ActiveWorkbook
Sheets.Copy  'dès cette commande exécuté la fenêtre active est le nouveau classeur contenant tous les onglets du fichier source
For i = 1 To Sheets.Count  'pour tous les onglets du nouveau classeur afficher l'onglet
Sheets(i).Visible = True
Next i

ActiveWorkbook.BreakLink Name:=wk.FullName, Type:=xlExcelLinks   'briser les liens
'activeworkbok.SaveAs ....

Re i20100,

Écoute après différents essaye j'ai fini par faire un mixte de code et pour le moment ça fonctionne, j'ai mit cela :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

For i = 1 To Sheets.Count  'pour tous les onglets du nouveau classeur afficher l'onglet
Sheets(i).Visible = True
Next i

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"T:\AFFAIRES\10 PLANNING\en cour de modif\Test\boby.xlsx" _
, FileFormat:=xlWorkbookDefault, Password:="boby", CreateBackup:=False
Application.DisplayAlerts = True

End Sub

Ainsi j'ai bien la création d'un fichier boby.xlsx avec un mot de passe, et j'ai bien l'ensemble des onglets qui apparaissent. Du coup le fichier ce met bien a jour une fois que le fichier de base est fermer. Le fichier de sauvegarde est en XLSX donc sans codes et donc aucun souci pour l'ouvrir avec MAC

Donc visiblement tout est OK pour moi

Merci pour ton aide, c'est mon directeur qui va être content

Rechercher des sujets similaires à "fichier sauvegarde temps reel xlsm xlsx"