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ème de référence xlam


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut Problème de référence xlam
    Bonjour à tous,

    Je viens vers vous car j'ai un problème concernant les références.
    J'ai un programme VBA lancé à partir d'un fichier xlsm qui fait appel à plusieurs autres fichiers xlsm. La majorité des macros utilisées par ces fichiers sont dans un fichier référence xlam.
    Mon problème est le suivant :
    malgré que le chemin de la référence xlam soit le bon (vérifié dans Outils/Références), l'appel d'une macro par Application.run tente de chercher la macro dans un chemin différent.
    Concrètement, mon fichier "mesmacros.xlam" qui se trouve dans le dossier "mon dossier" est ouvert et actif, le chemin d'accès enregistré dans la liste des références du fichier xlsm est bien le chemin de "mon dossier", mais lorsque le programme invoque une macro il tente de la chercher dans un autre dossier où bien entendu le fichier "mesmacros.xlam" n'existe pas.

    Pourtant, je prends soin de bien mettre à jour la référence à l'ouverture du fichier par :
    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
    16
    17
    Private Sub Workbook_Open()
    With ThisWorkbook
        'suppression de la référence mesmacrosVBA
        Dim Ref As Integer
        With .VBProject
            For Ref = 1 To .References.Count
                If .References(Ref).Name = "mesmacrosVBA" Then
                    .References.Remove .References.Item(Ref)
                    Exit For
                End If
            Next Ref
            'installation de la référence mesmacros.xlam
            .References.AddFromFile ThisWorkbook.Path & "\mesmacros.xlam"
        End With
    End With
     
    End Sub
    mais ça ne change rien.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Workbook_Activate()
    Application.Run "mesmacros.xlam!mamacro"
    me donne le message suivant :
    Erreur d'exécution 1004
    'D:\Michel\mesmacros.xlam' introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement.
    etc...
    Le nom est bien évidemment correct, pas l'emplacement qui devrait être celui du Thisworkbook.

    Quelqu'un saurait-il me dire pourquoi l'appel Application.run va chercher la macro appelée dans un emplacement qui n'existe pas ou plus (je ne peux pas m'en rappeler) plutôt que dans la référence qui est ouverte et qui est enregistrée, et surtout me dire comment y remédier ?

    D'avance merci pour votre aide.

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Si je lis entre les lignes, tu as plusieurs exemplaires du mesmacros.xlam ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut
    Oui, car mon programme est en production et je fais mes essais dans des dossiers différents.
    Cependant il n'y a rien qui concerne de près ou de loin mon programme dans le dossier dans lequel le fichier tente de lire les macros. Que les dossiers soient différents ne posent pas de problème et c'est bien le cas de chaque utilisateur car le programme est stocké sur les Dropbox individuels où chacun a sa propre structure de dossier. Je fais simplement une mise à jour des liens et tout fonctionne bien, sauf sur certains dossiers où la référence qu'ils tentent d'utiliser n'est pas celle qui est enregistrée dans la liste. C'est assez inexplicable, pour moi en tout cas.

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    RE

    A vérifier mais je pense que le 1er ouvert reste en mémoire si tu ne quittes pas Excel

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut
    J'y avais pensé mais ce n'est pas le cas. Je démarre toujours sur une nouvelle session. Le fichier xlam est ouvert avant l'ouverture du fichier xlsm et de ce que j'ai cru comprendre, les appels aux macros vont d'abord chercher dans les fichiers ouverts. Mais là, il va me chercher un chemin improbable.

    Autre précision : je viens de me rendre compte que c'est seulement dans le Thisworkbook que l'Application.run ne fonctionnait pas. Pas de souci en revanche dans les feuilles ni les modules. Pourquoi ?

    Si je passe par un Call mesmacrosVBA.mamacro qui lui va bien chercher dans le projet mesmacros.xlam, ça fonctionne très bien mais de ce que j'ai pu lire ici et ailleurs, ce n'est pas très propre et qu'il est plutôt conseillé de faire un Application.run.

Discussions similaires

  1. [VBA-E] Problème de références
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 13/07/2006, 09h04
  2. Problème de référence de classe
    Par nmathon dans le forum Delphi
    Réponses: 7
    Dernier message: 21/06/2006, 16h46
  3. [FLASH MX2004] this et problème de référence
    Par cristolb dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 03/05/2006, 22h33
  4. Problème de référence de données circulaire
    Par Wismerhill50 dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2005, 22h38
  5. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39

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