Pilotage d'une base Acces via Excel en VBA

Résolu/Fermé
Xak28700 Messages postés 6 Date d'inscription samedi 31 août 2013 Statut Membre Dernière intervention 17 juin 2016 - 1 avril 2015 à 17:26
 Xak28700 - 3 avril 2015 à 07:42
Bonjour à tous,

J'ai créé un outil d'indexation multi-utilsateur sous Excel qui alimente une base access. L'outil fonctionne plutôt très bien à l'exception près qu'il arrive parfois qu'un message de débogage s'affiche au moment d'accéder à la base de données Acces.

Si l'on débug et que l'on poursuit l'exécution du code (via la flèche verte), le programme redémarre.

Je pense donc que la base est occupée à cet instant précis d'où ce bug.

J'ai cherché partout sur les forums un code permettant d'attendre que la base soit disponible et mettre le code en attente afin d'éviter ces débugages mais sans succès.

Je me demande donc si cela est faisable mais je n'en doute pas, j'ai vraiment besoin de votre aide pour le coup :-)

Merci d'avance pour votre aide

Eric
A voir également:

2 réponses

Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
1 avril 2015 à 17:47
Bonjour,

Vous dites que votre base est occupée, mais à quoi ???
Une base de données type Access est capable de recevoir plusieurs requêtes simultanément (si cela est bien configuré).

Je ne comprend pas tout. Vous avez un fichier Excel, utilisé par plusieurs personnes et qui utilise une base de données Access ?

Cordialement
0
Bonjour thorax83,

Une dizaine de personnes font des requêtes et de l.enrichissement sur une base de donnees acces tres régulièrement (toutes les 15 ou 20 secondes en continue sur une quarantaine de champs en même temps)

Je n'aurais pas la prétention de dire que mon code est configuré au petit oignons car je suis un autodidacte mais je me suis fait mon expérience a travers de nombreux forums et ai pris ce qui me semblait le meilleurs

Le probleme est que lorsque le débugage survient, c'est toujours au moment de l'acces a la base de données et que le fait de relancer la procédure règle le probleme.

Je suppose donc que le soucis est de l'ordre d'une temporisation inexistante qu'il faudrait creer le temps que la base puisse accepter une nouvelle requete ?!?

J'espere avoir été un peu plus clair et que cela vous aidera à mieux comprendre le contexte

Eric
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
2 avril 2015 à 08:00
Vous devez atteindre les limites du moteur d'Access. Access n'est pas vraiment un serveur de base de données mais plutôt un fichier partagé (c'est simpliste comme explication mais proche de la réalité). Je vous conseil fortement de migrer votre structure de base de données sous Sql Server (version Gratuite).
Ca reste du Microsoft, donc migration hyper simple puisqu'elle peut se faire directement d'Access. Mais vous verrez les performances très très nettement augmenter. Je vous dis cela par expérience.
0
Merci pour cette réponse qui va dans le sens de ce que je pensais. Il ne me reste plus qu'a passer sur mysql si je comprends bien.

Merci encore pour l'interet que vous avez porté à ma demande

Eric
0
Bonjour,
"Une dizaine de personnes font des requêtes et de l.enrichissement sur une base de donnees Access tres régulièrement (toutes les 15 ou 20 secondes en continue sur une quarantaine de champs en même temps) "
Quelle est ta version de Access?
Si c'est une version antérieure à 2007, tu prends des gros risques; elle est vendue par MS pour supporter 5 à 6 utilisateurs simultanés. Si la version est postérieure, tu peux monter jusqu'à une vingtaine. Après,..., si vous travaillez sur une quarantaine de champs en même temps et aussi nombreux, il est possible que le moteur de la base elle-même patine un peu.
Peut-être devrais-tu envisager de scinder ta base et les tables, afin que le travail soit plus séquentiel. Et puis, peut-être devras-tu passer par deux bases travaillant en parallèle, sur le mode des répliquas. Il y a quelque temps, un internaute avait un problème comme ça, qui a été résolu par les réplicas.
Bonne suite.
0