MS ACCESS : Réparer un fichier accdb ou mdb (nouvelle édition)

Avec Microsoft Access, il peut arriver d’avoir du code VBA lié aux formulaires ou aux états qui ne soit plus accessible ou qui provoque des erreurs inexplicables. C’est rageant ! Surtout que les moyens de réparation sont rares. Je vous livre ici une méthode qui, pour moi, a fait ses preuves dans de nombreux cas. Cela consiste à traiter le fichier avec deux commandes.

Attention vous devez traiter uniquement une copie de la base endommagée. C’est pour cette raison que le fichier est copié avant d’être traité.

Voici donc un batch (.cmd) qui peut être utilisé directement par Windows.

rem @echo off
echo --------------- GUIDE D'UTILISATION --------------------------------
echo Copiez ce fichier dans le répertoire racine à traiter.
echo Decompile et compacte le fichier.
echo Enfoncé la touche Shift pour la première passe.
echo --------------------------------------------------------------------
echo AUTEUR : FABRICE CONSTANS MVP
copy %1 %1.sav
SET NoExecuteApplication = "Oui"
"C:\Program files\Microsoft Office\OFFICE14\MSACCESS.EXE" %1 /Decompile
"C:\Program files\Microsoft Office\OFFICE14\MSACCESS.EXE" %1 /Compact
SET NoExecuteApplication=

Faites-glisser la copie de votre application sur le batch en maintenant le shift appuyé pour éviter l’exécution du code. Lorsque la barre de progression d’Access est terminée fermez l’application pour démarrer le compactage. Vous décompilez (reconstruction des liens VBA) et compactez la base. Vous pouvez l’utilisé à partir de la version 97.

Notez que suivant la version d’Access vous devrez remplacer le chemin MSACCESS.EXE par le votre.

NoExecuteApplication permet à votre application de ne pas s’exécuter lors de ce traitement. Il faut dans l’application prévoir ce cas en utilisant ce code dans votre procédure de démarrage de l’application :

'debogage, decompil, compactage

If Not Environ("NoExecuteApplication") = "" Then

   'autres traitements possibles en post livraison
   Application.Quit   'quitte

End If

Bonne utilisation !