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

Macros et VBA Excel Discussion :

Problèmes de chemin DLL entre Windows Seven 32 et 64 bits. [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Par défaut Problèmes de chemin DLL entre Windows Seven 32 et 64 bits.
    Bonjour,
    Je m'adresse à votre communauté, car je suis en train de développer une macro VBA sous Excel qui sera utilisé sous un système 32 et 64 bits. Je rencontre un problème au niveau de mes chemins de référence DLL, en effet sous un environnement 32 bits mon chemin d'accès est : « C:\Program Files\ …. » Alors que sous un système 64 bits il sera : « C:\Program Files (x86)\ … ».
    Donc, ma question est : existe-t-il une façon de déclarer le chemin des DLL en fonction du système sous lequel ma macro s'exécute.
    Merci d’avance pour l'attention portée à mon problème.

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Par défaut
    Bonjour

    A essayer, la fonction Environ. C'est un classique, mais ça aide toujours
    Dans un module standard la fonction MyEnv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function MyEnv(arg1 As Integer) As String
        MyEnv = Environ(arg1)      'Un coup de F1 sur Environ pour + d'explications, mais on reste dans le laconique
    End Function
    Dans une feuille vierge, "A1" =1, "B1"=MyEnv(A1), tirer vers le bas. Pour du 64 bits, ça va jusqu'à 39.
    Après, il faut faire le tri



    Cordialement

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Visual Basic For Applications est une librairie par défaut elle se trouve comme tu l'as dit dans C:\Program Files\ ou C:\Program Files (x86)!

    pour palier a cela tu peux utiliser l'instance effectivement chargé.
    Code instance Vba : Sélectionner tout - Visualiser dans une fenêtre à part
    txt =VBA.Left("TOTO",1)

    pour Word, Excel, Fso... pas de référence mais du CreateObject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Wdr As Object
    Set Wdr = CreateObject("Word.Application")

  4. #4
    Membre averti
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Par défaut
    merci pour vos réponses mais mes connaissances en VBA ne permettent pas de comprendre. Pourriez-vous détailler un petit peu plus, je vous remercie d'avance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    comme dit plus haut, Visual Basic For Applications est une référence chargé par défaut, elle ce trouve au choix dans C:\Program Files\ ou C:\Program Files (x86); comme les référence sont incluses dans ton projet VB elle ce retrouve en doublons (Conflit)! toutes le instruction VBA (Trim, Left, Ucase...) font référence à cette dll difficile de ce passer de Visual Basic dans VBA!

    donc on utilisera l'instance VBA qu’excelle aura réellement chargé en mémoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt =VBA.Left("TOTO",1)
    on évitera dans la mesure du possible de sélectionner de référence dans son projet VBA.

    Code Avec sélection de référence : Sélectionner tout - Visualiser dans une fenêtre à part
    dim Wrd as New  Word.Application
    Code Pas de sélection de référence : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Wrd as Object
    Set Wrd = CreateObject("Word.Application")

  6. #6
    Membre averti
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Par défaut
    Un grand merci pour vos explications.
    j'ai pu appliquer vos précieux conseils sur la partie de macro que j'ai écrite moi-même, ce qui a corrigé mes problèmes concernant la DLL relatifs à Word.
    mais il doit me manquer une subtilité car je n'arrive pas à appliquer ce correctif dans un code j'ai récupéré sur le net pour générer un fichier PDF, la DLL concernant PDF créateur ne pose toujours problème.

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

Discussions similaires

  1. Problème de fenêtre modale sous Windows Seven
    Par MicroPuce dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 18/03/2011, 16h42
  2. Réponses: 0
    Dernier message: 20/12/2010, 15h54
  3. La différence entre windows 7 64 et 32 bits
    Par scaryfan dans le forum Windows 7
    Réponses: 8
    Dernier message: 23/10/2009, 15h44
  4. Réponses: 5
    Dernier message: 16/03/2006, 00h09
  5. Réponses: 2
    Dernier message: 21/10/2004, 15h08

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