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 :

Gérer les références VBA dynamiquement [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Gérer les références VBA dynamiquement
    Bonjour

    Ma machine de développement est depuis peu sous Office 2010 + Access 2003

    J'ai développé de longue date une application Access, format 97-2003, qui doit tourner sur ma machine (A) (2010 + access 2003) mais aussi sur 2 autres qui sont, pour la première Full Office 2003 (B) et l'autre Full Office 2007 (C). Je sais, c'est , mais pas le choix.

    Quand je distribue mon application sur les machines B et C, j'ai un problème au niveau de 2 références sous VBA Access :
    1) Microsoft Graph 14.0 Object Library (C:\Program Files\Microsoft Office\Office14\Graph.exe
    2) Microsoft Word 14.0 Object Library (C:\Program Files\Microsoft Office\Office14\MSWORD.OLB)

    car elles n'existent pas sur les machines (B) et (C).

    Je me suis arrangé pour les créer sur les machines (B) et (C) en les copiant de l'Application.Path, mais cela ne fonctionne pas.

    Quand j'essaie de les référencer manuellement depuis le menu VBA, ils ne les prend pas non plus.

    Mes questions :

    1) Puis-je simplement les réferencer par Regsrv sans écraser la référence à la version normale qui tourne (2003 ou 2007)

    2) Est-il possible par du code (VBA) de gérer dynamiquement cette réference à l'ouverture de la DB en fonction de la version d'office qui tourne, et ce de manière transparente pour l'utilisateur ?

    Du genre : Version Office 2003 (12) -> Référence \office12\msword.olb
    Version Office 2010 (14) -> référence \Office14\msword.olb


    etc.....

    je ne vois pas les utilisateurs faire cela eux-même à chaque update

    Merci pour votre aide. Je n'ai aucune idée comment me dépatouiller de ce .

    G@dz

  2. #2
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Bonjour Godzestla.
    Dans ton cas ,je pense que le plus simple (et de loin) est de travailler en liaison tardive ,surtout avec des programmes Office .
    Je navigue aussi entre 2007 perso et 2003 boulot.
    Par contre ,tu auras peut-etre des problèmes d'extention de format (xlsx ...).
    Pour des applications autre que Office (pdfCreator par ex) ,il peut aussi y avoir un problème de version .Ayant due remettre d'équerre mon pc , j'ai téléchargé sur internet pdfCreator ,mais problème .C'était la version 14 alors qu'au boulot ,c'était la version 9.5 ,donc la reference n'était pas la meme.
    Alors sur la manipulation des références ,il y aurait de quoi faire un tuto. Surtout si on arrive a trouver celle qui pause problème dans la fenetre "reference" (manquant:MaReference 10.2) pour pouvoir la supprimer d'abord ,et ajouter la nouvelle.
    J'espère avoir pu t'aider un peu . A+

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonsoir Thierry Pallier,

    nous avons un point commun : ton prénom.

    Concernant ceci :
    Alors sur la manipulation des références ,il y aurait de quoi faire un tuto. Surtout si on arrive a trouver celle qui pause problème dans la fenetre "reference" (manquant:MaReference 10.2) pour pouvoir la supprimer d'abord ,et ajouter la nouvelle.
    C'est exactement ce que je cherche à faire.

    Pour ceci
    je pense que le plus simple (et de loin) est de travailler en liaison tardive
    , je ne sais malheureusement pas de quoi il est question

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Je pense que Thierry_PALLIER suggère de ne pas mettre de référence sur Graph et Word et d'utiliser un doCmd.CreateObject.

    Désolé de ne pas être plus précis mais c'est une zone que je ne maîtrise pas vraiment.

    Un solution que j'avais adoptée pour évitre cela était de passer par un appel externe (utilisation de shell et d'un .bat pour lancer mon Excel).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Gloups.

    Merci pour ta réponse.

  6. #6
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    La liaison tardive permet de ne pas avoir à référencer l'application à utiliser.
    En gros ,tu crée un objet Excel ,et le systeme recherche si il y a Excel d'installer sur ton poste ,et l'ouvre quelle que soit la version. La déclaration de l'objet (dim) et son affectation (set), sont les 2 seules differences (en principe) à apporter dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim appExcel As Object   ' Excel.Application    'Application Excel
        Dim wbExcel As Object   ' Excel.Workbook    'Classeur Excel
        Dim wsExcel As Object   ' Excel.Worksheet    'Feuille Excel
        Set appExcel = CreateObject("Excel.Application")
    nous avons un point commun : ton prénom
    On en as un autre moins drole ! Moi aussi ma DSI veux me supprimer access
    Bonsoir Thierry

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Thierry,

    merci pour ta réponse et ta solution,
    je vais regarder cela calmement.

    Courage avec ta direction....

    ---------------EDIT 22h10..

    Ca semble fonctionner. Yesssssssssss. Merci

    Voici ce que j'ai apporté comme modifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    'Private m_objWord                As Word.Application
    'Private m_objdoc                 As Word.document
    'Private m_objWord2               As Word.Application
    'Private m_objdoc2                As Word.document
    Private m_objWord                 As Object
    Private m_objdoc                  As Object
    Private m_objWord2                As Object
    Private m_objdoc2                 As Object
     
    '.....
     
        'Set m_objWord = New Word.Application
        Set m_objWord = CreateObject("Word.Application")
     
    '....
    Et le reste du code est inchangé....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        m_objWord.Visible = True ' 
        Set m_objdoc = m_objWord.Documents.Add(Model, , , True)
    Encore Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Solveur introuvable dans les références VBA
    Par Pier3d dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/05/2011, 22h07
  2. Gérer les sous domaines dynamiques
    Par Etanne dans le forum Apache
    Réponses: 1
    Dernier message: 26/05/2011, 23h21
  3. Comment gérer les références?
    Par faruedde dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2008, 17h24
  4. Gérer les évènements VBA par programmation
    Par gbuxo dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/05/2006, 11h13
  5. [XSL-FO] gérer les sauts de pages dynamiquement ?
    Par Mrlud dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/04/2005, 16h52

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