IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Déclaration des références


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut Déclaration des références
    Bonjour,

    A priori, j’ignore la version dont dispose celui qui utilisera mon application.

    Sur ma machine, [Access2000], l’application fonctionne avec les références suivantes :
    (en utilisant Function GetReferences() de cafeine)

    · Référence : VBA - Version : 4.0 - FullPath : C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6.DLL
    · Référence : Access - Version : 9.0 - FullPath : C:\Program Files\Microsoft Office2K\Office\msacc9.olb
    · Référence : utility - Version : 0.0 - FullPath : C:\Program Files\Microsoft Office2K\Office\1036\utility.mda
    · Référence : DAO - Version : 5.0 - FullPath : C:\Program Files\Fichiers communs\Microsoft Shared\DAO\DAO360.DLL
    · Référence : VBIDE - Version : 5.3 - FullPath : C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
    · Référence : Scripting - Version : 1.0 - FullPath : C:\WINDOWS\system32\SCRRUN.DLL


    ma question principale :
    Comment dois-je m’y prendre, pour que mon utilisateur n’ait pas à modifier les références originales pour utiliser l’application avec une version Access autre ?

    une question subsidiaire :
    existe-t-il un tableau de correspondance qui donnerait l’équivalent de mes références dans les versions Access plus récentes ?

    Merci déjà pour l'aide.

  2. #2
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    En voilà une question intéressante.
    J'avais rencontré le même problème à une époque.
    Moi ce que j'avais fait c'est que ma base frontale avait pour seule référence Microsoft DAO.
    Les chemins de mes références étaient stockés dans une table prévue à cet effet.
    Ensuite j’avais mis un bouton qui supprimait toutes les références de la base puis ajoutait toutes les références de la table (située sur la base dorsale) lors de la première utilisation.

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    [Access] Les bases du débogage => ici

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    OK, merci je progresse :

    1° ----> quand je connaîtrai les références, je les stockerai dans une table appelée « UIOPX » en souvenir.
    Merci azertix et je vote !


    2° Avec, bien obligé en l'occurrence, un late binding.
    Quoique le lien de Kloun contienne dans sa conclusion :

    But some programming geniuses prefer to use late binding, because of the peace of mind it gives them regarding version independence – or maybe some of them just enjoy the challenge!
    et qu’il me reste un long chemin avant d’être programming genius ! Mais le défi me plaît !
    Merci kloun

    Mais encore faut-il que je connaisse le nom des références équivalentes à celles de ma version.
    Où puis-je trouver une liste ?

    Smile (after having nose amputated)
    :-) Smile (prior to above operation)
    :-( Frown (at prospect of above operation)
    ;-) Wink (it's ok you don't need above operation after all)

  5. #5
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Si j'ai bien compris ce qui est dit dans le lien de Kloun (j'y ai jeté un œil), Access est capable dans une version supérieure d'ajouter la référence la plus récente si une référence plus ancienne est activée.

    Edit
    Je confirme :
    If you set a reference in a Word 97 project to “Microsoft Excel 8.0 Object Library”, then the project will run OK on a machine which has Office 2000 installed. Word 2000 changes the reference on the fly to the “Microsoft Excel 9.0 Object Library”.
    La phrase concerne Word, mais je pense que c'est aussi valable pour Access puisque c'est VBA aussi

    Edit 2
    Pour en être sûr, je pense que le mieux est de tester...
    Si tu veux, vu que tu sembles utiliser Access 2k, tu m'envoies une base de test et je te dis si ça marche sans erreur (j'ai Access 2003).

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    De mon côté, j'ai compris que Access se débrouillait parce l'application donnée en exemple (Word ou Excel) fait partie de la famille Office.
    Vois d'ailleurs la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oXL = GetObject(, "Excel.Application")
    Comment va-t-il se débrouiller pour utility par exemple ?


    Edit 1 : que c'est sympa.

    Edit 2 : en annexe la base actuelle.
    constatations : a) je ne peux décocher les 2 premières références
    b) je ne trouve pas la syntaxe du code qui permettrait de lier les suivantes après ouverture de la DB

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Merci Azertix,

    J’ai pu utiliser ta procédure.

    NB pour qu’elle puisse fonctionner, il faut au moins qu’une référence Microsoft DAO soit présente au départ.
    Sinon, sur le bouton cmdFirstRun, le clic coince.

    J’ai d’abord alimenté la table CHEMIN_REF avec la fonction GetReferences.

    Ensuite, j’ai vérifié ce qui se passait lorsque, volontairement, je désactive une référence :
    ---> un clic sur le bouton cmdFirstRun. ---> Parfait : la procédure l’ajoute.


    Mais lorsqu’une référence manque le programme va chercher son chemin dans la table … qui contient les chemins sur mon PC, à l’origine, quand j’ai chargé avec GetReferences.
    Exemple Utility, chez moi a le chemin : « C:\Program Files\Microsoft Office2K\Office\1036\utility.mda », la probabilité que mon correspondant ait le même chemin, est assez faible.
    Comment puis-je gérer cela ?

  8. #8
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    Avec Access 2007 ça ne passe pas.
    Référence manquante : utility.mda
    Normal, le fichier s'appelle utility.accda dans Office 2007

    A quoi te sert la référence à utility.mda ?
    Il y a peut-être moyen de s'en passer.

    A+

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonsoir LedZeppII,
    Merci pour ton intérêt.
    Je viens de faire un contrôle rapide dans l'application qui m'occupe maintenant, j'ai supprimé la référence. Le débogage ne signale rien. Je dois approfondir mais c'est probablement un reliquat de la version sur Access97.
    Un problème en moins ! Espérons.
    Merci en tout cas.
    Bonne soirée.

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour à tous,

    les références sont dans la base de registre sous la clé HKEY_CLASSES_ROOT\TypeLib je crois. Certaines références ont le même numéro GUID quelque soit la version du produit.
    Pour gérer les emplacements des ref quelque soit le poste, comme azertix j'enregistre dans une table les références en scindant en deux le nom du fichier, une partie représente le dossier sous forme d'alias.
    Les alias que j'utilise reprennent à peu de choses près les variables d'environnement, ProgramFiles, CommonProgramFiles, Windir (il y a peut-être d'autres variables d'environnement sous Vista et seven) ...... plus quelques autres comme OfficeDir, InstallDir(dossier d'accueil de la base), DataDir... Ainsi, les emplacements des fichier sont un plus indépendants du poste de développement.
    Une fonction sert à faire la conversion alias-chemin, chemin-alias.

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour ilank,

    Merci pour ta réponse.
    Cependant, nous ne boxons pas dans la même catégorie : je n'ai aucune formation informatique, seulement un peu Access par essai/erreur, <F1> et ce forum.
    Je n'ai donc pas tout compris et dès lors pas les moyens d'appliquer ton idée.
    Un exemple m'aiderait sans doute.
    Quoi qu'il en soit, je te remercie : le problème est chez moi.

    N'est-ce pas dans le même esprit que ceci ?
    Mon instinct me dit que le lien renseigné au post 8 est la bonne voie, mais l'état de mes connaissances
    1° ne me permet pas d'actualiser le code (si nécessaire)
    2° de comprendre quand et comment déclencher le processus.

    Si oui, ----> le 1° est sans objet.

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    Voici où j’en suis après avoir pris des morceaux chez : azertix, Kloun (le lien renseigné au post 8 !!), LedZeppII, ilank et Simplifi.

    Un petit résumé sous forme d’exemple en annexe.

    J’ai développé en Access97 pour me permettre de tester l’emploi avec Access2000.
    Chez moi, c’est OK.

    Principe
    Pour que ce soit le plus « général » possible, j’ai travaillé avec le Guid des références.

    Comment marche l’exemple

    A l’ouverture du formulaire fGestionReferences, on assigne d’office la référence DAO, elle est indispensable au fonctionnement. (voir le code dans l’événement Sur ouverture).

    Clic sur le bouton : Afficher les références actuelles ---> références actuelles et leur Guid sont affichées.
    nb : les références sans Guid (ex. Utily.mda) sont ici signalées, mais non traitées.

    Clic sur le bouton : Ajouter les références utiles ---> les références mentionnées dans tReferences sont celles dont la présence obligatoire avait été antérieurement décidée . Le programme ajoute les références qui ne seraient pas encore présentes dans l’application active.

    Clic sur le bouton : Pour constituer une table des références utiles ---> Purge tReferences et y inscrit les références actuelles de l’application active, pour autant qu’un Guid y soit associé.

    Comment j’ai procédé pour tester

    En Access97, j’ai coché 11 références de la liste et ajouter Utily.mda (pour illustrer ce qui se passe en cas d’absence de Guid). J’ai ensuite décoché cette dernière référence. Je chercherai une solution plus tard, s’il s’avère qu’elle m'est nécessaire. A priori, je n’en aurai pas besoin.

    J’ai cliqué sur le bouton : Pour constituer une table des références utiles.

    J’ai fermé la DB.

    J’ai ensuite ouvert GestionReferences97.mdb avec ACCESS2000
    Après conversion, voici les références :



    Comme l’annonçait Simplifi, Access2000 a monté une marche : les versions ont été adaptées.
    Access2000 a même monté 2 marches : des références ont été d’office ajoutées à l'insu de mon plein gré (sic). Voyez les 2 dernières.
    En ce qui me concerne, mystère mais ça ne me gêne pas (encore).

    J’ai alors décoché toutes les références (sauf refus pour les 2 premières).
    Fermer le formulaire fGestionReferences.
    Je l’ai rouvert ---> pour provoquer l’événement Sur ouverture.
    A ce moment, je constate que la référence DAO a été ajoutée. Elle est indispensable au fonctionnement des boutons.

    Je clique sur le bouton : Ajouter les références utiles ---> elles s’ajoutent l’une après l’autre.
    Re-mystère : les 2 références signalées plus haut, n’ont, cette fois, pas été ajoutées.


    Conclusion
    Chez moi, ça marche.
    Il se peut que mon test soit biaisé puisque sur ma machine Access97 et Acces2000 cohabitent.
    Appel à témoins
    Si vous avez été intéressé par ceci et que vous l’avez testé, dites-moi comment ça se passe chez vous avec des versions postérieures à 97.
    Encore merci à tous ceux qui ont participé.

  13. #13
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Commentaires en direct live (Office 2003) :
    - À l'ouverture de la base, Access me propose deux choix : convertir la base en un format plus récent (il m'avertit que si je fais cela, je ne pourrai plus l'ouvrir avec Access 1997) ou valider la base. Je choisis valider.
    - Avertissement de sécurité (normal quoi). Je clique sur Ouvrir.
    - Aïe ! J'ai une erreur :

    - La base s'ouvre quand même. Je vois les tables et le formulaire.
    - Le formulaire fGestionReferences s'ouvre correctement.
    - Je clique sur Afficher les références actuelles.
    - S'affichent VBA, Access, DAO et une ou deux autres que je connais pas.
    - À chaque référence, je clique sur ok.
    - Soudain :

    Quand je clique sur débogage, j'arrive sur ce code :

    En cliquant sur continuer (F5), Access m'indique que "la méthode Name de l'objet Reference a échoué".
    - Cette même erreur s'affiche lors du clic sur le bouton "Ajouter les références utiles".
    Le code incriminé est le suivant :

    - Enfin, je clique sur le dernier bouton "Constituer table réf. utiles".
    Même erreur. Le code pointé :


    J'essaye de voir si je peux arranger ça mais un utilisateur lambda qui aurait la même version d'Access que moi rencontrerait des difficultés

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour azertix,
    Merci pour cette réaction rapide
    tes images sont peu lisibles !
    Ca peut s'aranger ?
    lambdax.

  15. #15
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    A l'aveugle (rapport à tes images !), c'est comme si, après conversion il y avait des références manquantes.
    Vérifie d'abord avant de chercher plus loin.
    Chez moi, ce cas est impossible puisque j'ai les 2 versions sur ma machine et je ne veux pas prendre le risque d'enlever Access97 et le réinstaller ensuite.

  16. #16
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Ben qu'est ce qu'elles ont mes images ?
    Ce sont des impressions d'écran en taille réelle, je peux difficilement faire mieux...
    Si tu les vois mal, ça vient peut-être de ton navigateur ?

    Sinon tu sembles avoir compris que j'avais fait la conversion de la base alors que j'indique dans mon post que j'ai choisi l'option "Valider la base"

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/07/2007, 11h50
  2. Réponses: 1
    Dernier message: 10/06/2005, 11h37
  3. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18
  4. Réponses: 5
    Dernier message: 10/11/2004, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo