Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/10/2011, 11h34   #1
Invité de passage
 
Homme jacques-yves
Administrateur de base de données
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme jacques-yves
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Associations - ONG

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 0
Points : 0
Par défaut Quelle bibliothèque de module externe référencer

Je suis nouveau venu sur ce forum et ne suis pas sûr d'en connaître les usages. merci de votre tolérance...

Pour une ONG, J'exploite une base de donnée sous access 2003 avec format de données access 2000. La base contient environ 75 tables, une centaine de formulaires et environ 20 000 lignes de code VBA. les modules les plus anciens de cette base doivent remonter à Access 97. (Je dois activer la référence externe DAO2535.tlb.)
Ma machine de développement(chez moi) est sous seven depuis trois mois, (auparavant sous xp pro), les 6 machines sur lesquelles est exploitée la base sont 4 XP, 1 vista et 1 seven.

Il y a 2 mois, j'installe une version N+1 de la base sur les machines d'exploitation et, surprise!, seule les machines sous Vista et Seven fonctionnent. les autres selon le formulaire que j'essaie d'ouvrir,
* plantent sauvagement sans message d'erreur exploitable. (tout au plus... "le programme Access a rencontré des problèmes... désolé !).
* m'envoient des messages aberrants (du genre [fonction "ucase" non définie dans l'expresssion]) quand j'ouvre un autre formulaire...
Autre dysfonctionnement observé : après plantage ou message erreur du type "ucase..." on ne peut plus fermer l'instance access (il faut passer par le gestionnaire des tâches).


A force de tâtonnement, j'ai remarqué qu'en désactivant sur les machines sous XP la référence "Microsoft Visual Basic for application extensibility 5.3", le programme recommençait à fonctionner normalement. (alors que sans ce module, il ne fonctionne pas sous Seven).

Cette situation n'est pas satisfaisante car le déploiement de nouvelles versions sur les machines devient un casse tête et, surtout, je ne comprends pas ce qui se passe.

Mes questions sont

1) Comment savoir quel référence externe activer, les fonctions contenues dans chaque référence externe et l'ordre dans lesquelles ces références doivent être positionnées.

2) comment expliquer la différence de comportement selon se système d'exploitation

Si nécessaire, j'indiquerai les références externes activées dans ma base actuellement

merci d'avance à qui voudra bien me faire profiter de ses compétences.
alpha_du_centaure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 11h49   #2
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 222
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 222
Points : 9 919
Points : 9 919
Envoyer un message via Skype™ à Domi2
Bonjour,

Sans être un grand spécialiste en la matière, je doute un peu que la plupart des problème soient liés aux références elles-mêmes.

Access 2003, avec une base au format 2000 devrait fonctionner sans problème, que ce soit sous XP, Vista ou Seven, sauf peut-être si tu utilises des bibliothèques très particulières.

La première chose que je ferais, ce serait donc de vérifier que sur tous les postes que les derniers Service pack sont bien à jour (Windows et Office), et que tu as bien la dernière version de Jet installée partout.

Et effectivement, la liste des références que tu utilises serait utile.

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 16h10   #3
Invité de passage
 
Homme jacques-yves
Administrateur de base de données
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme jacques-yves
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Associations - ONG

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 0
Points : 0
Merci
Domi2,

les service pack Access sont à jour.(sp3) pour toutes les machines. A ma connaissance, il n'y a plus de mise à jour sur access 2003.
les mises à jour windows sont faites de manière automatique sur chaque machine.
par contre, je ne sais pas comment identifier la version de jet qui est en service.
peux tu me dire comment je peux trouver cette info.
Concernant les références externes, j'ai en ligne et dans cet ordre :
  • Visual basic for applications
  • Microsoft access 11.0 object library
  • utility
  • Microsoft Dao 2.5/3.5 compatibility library
  • OLE automation
  • Microsoft Visual basic for applications extensibility 5.3

Cette dernière référence est indispensable sur les machines en seven et provoque bug sur les xp... et je l'élimine donc sur ces machines

Que dire de plus ?

merci de ton avis
alpha_du_centaure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 16h04   #4
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 222
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 222
Points : 9 919
Points : 9 919
Envoyer un message via Skype™ à Domi2
Bonjour,

Citation:
Envoyé par alpha_du_centaure Voir le message
les service pack Access sont à jour.(sp3) pour toutes les machines. A ma connaissance, il n'y a plus de mise à jour sur access 2003.
les mises à jour windows sont faites de manière automatique sur chaque machine.
par contre, je ne sais pas comment identifier la version de jet qui est en service.
peux tu me dire comment je peux trouver cette info.
Effectivement, le SP3 est la dernière mise à jour. Je ne vois donc pas de raison que la dernière version de Jet ne soit pas installée, mais peut-être que vérifier ne serait pas plus mal.

Pour la version de Jet : http://support.microsoft.com/kb/321329/fr

Pour une éventuelle mise à jour : http://www.microsoft.com/downloads/f...0-46f815d3f5cd

Maintenant, en lisant plus attentivement ton premier message hier soir, je relève :

Citation:
Envoyé par alpha_du_centaure Voir le message
les autres selon le formulaire que j'essaie d'ouvrir,
* plantent sauvagement sans message d'erreur exploitable. (tout au plus... "le programme Access a rencontré des problèmes... désolé !).
* m'envoient des messages aberrants (du genre [fonction "ucase" non définie dans l'expresssion]) quand j'ouvre un autre formulaire...
Autre dysfonctionnement observé : après plantage ou message erreur du type "ucase..." on ne peut plus fermer l'instance access (il faut passer par le gestionnaire des tâches)
Ce sont peut-être des signes que ta base est en train de ce corrompre. On peut également probablement y ajouter le fait que la référence Microsoft Visual basic for applications extensibility 5.3 soit nécessaire sous Windows 7 mais provoque des plantages sous XP et que tu doives la désactiver dans cet environnement.

Aussi, la première chose que je ferais, c'est de créer une nouvelle base vierge et d'y importer tous les objets de l'ancienne base. Ainsi, tu disposeras d'une base "propre". De toute façon, cette opération ne pourra être que bénéfique.

Ensuite, en partant de cette nouvelle base et sous Windows 7, je supprimerais la référence à Microsoft Visual basic for applications extensibility 5.3, puis je compilerais le code.

Si pas d'erreur à la compilation, ce sera déjà la preuve qu'elle n'est pas nécessaire.

Peux-tu déjà faire ceci ?

D'autre part :

Citation:
Envoyé par alpha_du_centaure Voir le message
Concernant les références externes, j'ai en ligne et dans cet ordre :
  • Visual basic for applications
  • Microsoft access 11.0 object library
  • utility
  • Microsoft DAO 2.5/3.5 compatibility library
  • OLE automation
  • Microsoft Visual basic for applications extensibility 5.3

Cette dernière référence est indispensable sur les machines en seven et provoque bug sur les xp... et je l'élimine donc sur ces machines

Que dire de plus ?

merci de ton avis
Tu peux éventuellement remonter OLE automation directement sous Microsoft access 11.0 object library, mais je ne pense pas que cela va changer grand-chose.

Concernant Microsoft DAO 2.5/3.5 compatibility library et utility, cela assure la compatibilité avec l'ancienne syntaxe DAO et d'autres éléments de code propre à Access 97.

Je ne sais pas exactement ce que tu auras comme références après réimportation dans une nouvelle base, cela serait intéressant de les noter.

Si la référence Utility est toujours présente, cela serait intéressant de la supprimer, puis de compiler ton code.

Au niveau de la bibliothèque DAO, si elle n'est plus référencée, tu devras certainement la remplacer par Microsoft DAO 3.6 Object Library (je ne sais pas si une réinstallation de l'ancienne bibliothèque est possible), et là, tu auras certainement des erreurs, parce que si elle est présente aujourd'hui, c'est que les anciennes syntaxes DAO n'ont pas été remplacée.

Un lien : http://support.microsoft.com/kb/313233/fr

Voilà, je ne peux pas t'en dire beaucoup plus, il faudrait déjà essayer de créer ta nouvelle base et procéder par étape.

Ah, si, sauf à dire une énormité, tu ne pourras te passer d'une mise à niveau de ton code si tu entends migrer un jour vers Access 2007 ou supérieure. Tu n'auras plus de compatibilité avec les anciennes bibliothèques.
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 21h08   #5
Invité de passage
 
Homme jacques-yves
Administrateur de base de données
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme jacques-yves
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Associations - ONG

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 0
Points : 0
Par défaut Un grand merci , Domi2

Merci beaucoup de tes commentaires et éléments de réflexion.

Suivant tes conseils, jai reconstruit une base en important dans une base vierge les objets de l'ancienne.
J'ai activé 4 références de bibliothèque et 4 seulement :
  • Visual basic for applications
  • Microsoft access 11.0 object library
  • OLE automation
  • Microsoft DAO 2.5/3.5 compatibility library
et tout semble fonctionner parfaitement, tant sous seven que sous xp...

Espérons que cela va tenir mais pour l'instant c'est parfait.

Concernant le version Jet, je ne peux pas utiliser le code c++ auquel tu me renvoies. Je ne connais pas C++ et sauf erreur je ne l'ai pas sur ma machine.

Concernant un éventuel passage sous access 2007, ce n'est pas à l'ordre du jour car
  • les moyens de l'association sont modestes
  • je n'ai pas le courage de reprendre les 20 000 lignes de code.

Y aurait il une raison pour laquelle access 2003 deviendrait obsolete, qui me forcerait à franchir ce pas ? J'ai en outre vu sur le forum que le passage de 2007 à 2010 était encore plus problématique. Raison de plus...

Encore merci d'avoir pris le temps de répondre à mes questions.
alpha_du_centaure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 16h42   #6
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 222
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 222
Points : 9 919
Points : 9 919
Envoyer un message via Skype™ à Domi2
Citation:
Envoyé par alpha_du_centaure Voir le message
J'ai activé 4 références de bibliothèque et 4 seulement :
  • Visual basic for applications
  • Microsoft access 11.0 object library
  • OLE automation
  • Microsoft DAO 2.5/3.5 compatibility library
Le fait que tu n'aies pas besoin de référencer Microsoft Visual basic for applications extensibility 5.3 et Utility semble plutôt bon signe


Citation:
Envoyé par alpha_du_centaure Voir le message
Concernant le version Jet, je ne peux pas utiliser le code c++ auquel tu me renvoies. Je ne connais pas C++ et sauf erreur je ne l'ai pas sur ma machine.
Désolé, je n'ai pas fait attention, j'ai fait ma recherche trop rapidement

Je n'ai pas mieux, mais comme tes postes de travail sont à jour, je ne vois guère de raison qu'il y ait des problèmes de ce côté-là.

Citation:
Envoyé par alpha_du_centaure Voir le message
Y aurait il une raison pour laquelle access 2003 deviendrait obsolète, qui me forcerait à franchir ce pas ?
A ma connaissance non. Mais il serait peut-être quand même intéressant de voir si tu as vraiment beaucoup d'instructions avec l'ancienne syntaxe DAO.

Si tu en as très peu, cela vaudrait peut-être la peine de faire une mise à jour du code.
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h38.


 
 
 
 
Partenaires

Hébergement Web