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 :
mais ça ne change rien.
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
Par exemple :
me donne le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub Workbook_Activate() Application.Run "mesmacros.xlam!mamacro"
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.
Partager