Err 3045 imposs. utiliser nomDB. Fichier en cours d'utilisation. [Fermé]

Signaler
Messages postés
21
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 janvier 2017
-
Messages postés
7
Date d'inscription
vendredi 20 novembre 2015
Statut
Membre
Dernière intervention
25 février 2016
-
Bonsoir, Bonjour,

Je me sens complètement désemparé face à ce message :
Impossible d'utiliser «ma-DB». Fichier en cours d'utilisation. (3045)
qui survient lorsque le code associé à un bouton d'un formulaire tout simple arrive sur l'instruction "Set MyDB = CurrentDb" dans cette Sub (les déclarations adéquates sont OK) :
Private Sub cmdImporterFiches_Click()
' Identifie les fichiers présents dans le dossier d'extraction de courriels,
' traite le contenu et le déplace vers le dossier des Traités
    On Error GoTo HandleErrors
Stop
    Set MyDB = CurrentDb	' <=== <=== <=== <=== <=== ICI L'ERREUR FATALE
    Set wDossier = wFSO.GetFolder(Me.ctlChemin)
    For Each wFil In wDossier.Files
        If Left(wFil.Name, 9) = Me.ctlPréfixe Then
            Extract (wFil.Name)    	' validation, lecture et traitement de chaque formulaire
            If SwOK = True Then		' arrêt sur 1er fichier intraitable
                wFil.Move Me.ctlChemin & Me.ctlFichesTraitées
            Else
                Exit For
            End If
        End If
    Next wFil
    Set MyDB = Nothing: Set wDoc = Nothing : Set wDossier = Nothing
    Set wFSO = Nothing: Set wApp = Nothing

ExitHere:
    Exit Sub

HandleErrors:
    HandleErrors Err.Number, "cmdImporterFiches_Click"
    Resume ExitHere
End Sub	'=======================================================

Seul utilisateur de mon PC sous Win 8 Pro et msAccess 2010, j'ai essayé avec les versions .accdb et .mdb. j'ai essayé des procédures de Compacter & Réparer, avec Decompile. J'ai vérifié les permissions de la DB. J'ai recréé une nouvelle DB, importé les objets : même erreur.
En VBA, j'ai dans cet ordre (et j'ai essayé en modifiant la séquence) les références suivantes :
- Visual Basic for Applications
- Microsoft Access 14.0 Object Library
- Ole Automation
- Microsoft Office 14.0 Access database engine Object Library
- Microsoft Scripting Runtime
- Microsoft Word 14.0 Object Library
Ces deux dernières librairies étant nécessaire pour traiter des formulaires Word. Je précise que je n'ai eu aucun problème pour ouvrir ces formulaires, les analyser et en extraire les données, tant que je n'étais pas arrivé à l'ouverture de la DB et des tables.
J'ai essayé des formules alternatives pour ouvrir la DB pour ouvrir une de ses tables :
Set MyDB = OpenDatabase(CheminNomDB, False)
Set MyDB = DBEngine(0)(0)

J'ai lu sur un site que les instructions suivantes pouvaient résoudre le problème :
RefreshDatabaseWindow
DBEngine.Idle dbRefreshCache

La première passe mais n'évite pas l'erreur sur le Set MyDB, la seconde suffit pour déclencher l'erreur 3045.
Je n'ai plus eu l'erreur après avoir transféré mes bases d'un dossier "D:\Proj2013PO\DB" vers un dossier ""D:\Proj2013PO\ProjetMSA", le changement de nom a été fructueux pendant 1 heure ou 2, puis c'est revenu soudainement après avoir codé quelques étapes de traitement. Ce n'est pas mon premier projet avec lequel j'ai cette erreur intermittente, imprévisible et m... Je développe des projets MSA depuis Access 2 et cela fait 40 ans que je suis analyste-programmeur. Je dois avoir une douzaine d'applications MSA perso, avec data DB multiples, etc. J'ai fait des recherches sur de nombreux sites mais en vain...
C'est tout simple : si cette erreur continue à me bloquer, je devrai abandonner ce projet à titre bénévole pour une ONG dont je suis membre. Voir virer Microsoft Access à l'avenir.
Alors tout conseil ou avis est bienvenu et je vous remercie de votre attention.
Michel

2 réponses

Messages postés
21
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 janvier 2017
2
Bonjour,

Je suis toujours bloqué à 100 % malgré mes tentaives hier et aujourd'hui matin.

J'ai donc créé une nouvelle DB "mini.mdb' dans la racine D:, avec 1 table ne contenant qu'un champ-clef, 1 formulaire sans source avec 1 bouton qui exécute ce code :
Dim MyDB As Database
Private Sub cmdMini_Click() '==============================
    On Error GoTo GestionErreurs
Stop
    Set MyDB = CurrentDb
    Set MyDB = Nothing
    
ExitHere:
    Exit Sub

GestionErreurs:
    GestionErreur Err.Number, "cmdMini_Click"
    Resume ExitHere
End Sub '==========================================

Exécution OK.
J'ai alors déplacé la base dans le répertoire où je travaille "D:\po2013\ProjetMSA". J'ai ouvert la base, l'ai activée pour éliminer la protection de Win8 après un déplacement de fichier, ouvert le formulaire et cliqué sur le bouton et Arghh, ERR 3045 a de nouveau frappé mes yeux effarés.
Il est donc possible (who knows ?) que le problème soit lié aux accès aux fichiers et/ou aux dossiers :
- "mini.mdb" : accès libre, la case "Lecture seule" n'est pas cochée. Partie "Attributs avancés", 2 cases sont cochées : "Le fichier est prêt à être archivé" et "Autoriser l'indexation du contenu de ce fichier en plus des propritéts de fichier"
- dossier "ProjetMSA" : la case "Lecture seule (s'applique uniquement aux fichiers du dossiers)" est dans un état intermédiaire (petit carré noir à l'intérieur de la case) entre non-cochée (case blanche) et cochée (case blanche avec le V classique). J'ai décoché la case ainsi que celle des dossier supérieur "po2013", ce qui donne un message avec e.a. une seule case cochée "Appliquer les modifications à ce dossier, aux-sous-dossiers et aux fichiers" sans possibilité de la décocher (et l'autre case n'est pas accessible) ; seule option : [OK].
- racine D: 97,6 Go dont 14,6 utilisés ; je l'avais mise en "Partagé" alors que cela n'a pas lieu d'être, mais sait-on jamais ? Les "Utilisateurs authentifiés", "Utilisateurs", "Administrateurs" et "Système" ont un contrôle total. Difficile de faire plus ouvert. La gestion de quota n'est pas activée.
Nouvelle exécution : même erreur et la case "Lecture seule" pour le dossier "ProjetMSA" est remis en stade intermédiaire à l'insu de mon plein gré ; j'ai lu sur un site de Microsoft que c'est sans impact sur les permission aux niveaux des fichiers.
J'ai supprimé l'indexation au niveau de mini.mdb. Nouvel essai et toujours l'erreur.
Où est-elle cette corde pour me pendre ? Non je vais plutôt investiguer du côté de LibreOffice et en plus c'est gratuit et pas comme Office : des centaines d'euros et des années de pratique et d'expérience à la poubelle.
Michel
Messages postés
7
Date d'inscription
vendredi 20 novembre 2015
Statut
Membre
Dernière intervention
25 février 2016

3045 erreur se produit lorsque vous essayez d'ouvrir le fichier de base de données, tandis qu'un autre utilisateur ou instance d'Access a déjà ouvert. Lorsque l'autre utilisateur ne quelques modifications ou des changements dans la base de données que l'assemblage de modules qui mettent la base de données en mode exclusif.
Ce moyen d'erreur
Vous ne pouvez pas utiliser [Nom de base]; fichier déjà utilisé

Pour corriger cette questions que vous devez vous assurer que chaque instance placée pour un même fichier MDW. Ceci est probablement réglé lorsque vous ouvrez divers programmes de base de données dans votre code VBA.

Vous pouvez également utiliser le logiciel de récupération MS Access pour réparer et restaurer endommagé, données corrompues ou inaccessibles. Vous pouvez fixer n'importe quel type d'erreur MS Access avec cet outil. Cet outil peut également résout le .mdb ou fichiers .acccdb et récupère les données à partir de votre base de données. Vous pouvez également restaurer les index, des tables, des requêtes et des relations avec cet outil.

http://fr.accessrepairnrecovery.com/blog/lacces-impossible-dutiliser-la-base-de-donnees-fichier-deja-utilise-erreur