Pour ne plus pleurer

Le problème de la corruption des fichiers

L’une des choses les plus hor­ri­bles qui puis­sent arriv­er à vos fichiers excel, c’est de tout per­dre suite à la cor­rup­tion du fichi­er. C’est une sit­u­a­tion assez rare — heureuse­ment — mais qui peut quand même arriv­er… 2 étu­di­ants sur 40 lors de mon dernier cours avec des fichiers assez com­plex­es.

Pour lim­iter les dégâts, voici un code VBA qui va — lors de chaque fer­me­ture du fichi­er — sauve­g­arder une ver­sion du fichi­er en inclu­ant la date et l’heure.

Comme cela, si le fichi­er se cor­rompt, vous pour­rez tou­jours repar­tir d’un dernier enreg­istrement non cor­rompu.

Procédure :

Enreg­istrez d’abord le fichi­er.

Dans VBE (ALT+F11), dou­ble-cliquez sur This­Work­book, puis coller ce code.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim fso As Object
    Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    ThisWorkbook.Save
    fso.CopyFile ThisWorkbook.Path & "\" & ThisWorkbook.Name, ThisWorkbook.Path & "\" & Replace(Date, "/", "-") & "-" & "-" & Replace(Time, ":", "-") & "-" & ThisWorkbook.Name
End Sub

Beau­coup d’amélio­ra­tions sont pos­si­bles, j’y reviendrai dans d’autres posts.

  • Vous pour­riez garder unique­ment les n fichiers les plus récents.
  • Vous pour­riez chang­er le réper­toire de sauve­g­arde.
  • Finale­ment, vous pour­riez créer la copie à chaque sauve­g­arde grâce à l’événe­ment Workbook_AfterSave.

PS : sur cer­tains ordi­na­teurs, ce code peut pos­er des prob­lèmes en rai­son du Scripting.FileSystemObject. Si c’est le cas, il existe plusieurs raisons :

  • Vous êtes sur MAC. Il existe des alter­na­tives, mais c’est un peu com­pliqué.
  • Il est pos­si­ble qu’il y ait des pro­tec­tions si vous tra­vaillez sur un serveur.
  • Il manque une référence au sys­tème de script (Dans VBE, Out­ils-Références, Microsoft Script­ing Run­time). Le fichi­er se trou­ve en général ici : C:\WINDOWS\System32\Scrrun.dll. S’il n’est pas là, vous pou­vez l’a­jouter en choi­sis­sant Par­courir…
En cadeau de bien­v­enue : les 7 com­bi­naisons de touch­es indis­pens­ables sur Excel
Pour marque-pages : permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.