Err 3045 imposs. utiliser nomDB. Fichier en cours d'utilisation.

Fermé
mihego32 Messages postés 36 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 3 janvier 2024 - 15 févr. 2013 à 23:41
ron003 Messages postés 7 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 25 février 2016 - 8 déc. 2015 à 07:03
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

mihego32 Messages postés 36 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 3 janvier 2024 3
17 févr. 2013 à 12:46
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
0