Bonjour,
Je cherche en vain le moyen de programmer en VBA Excel 2010, à l'ouverture d'un classeur, la désactivation des modules complémentaires personnels (xlsam).
Mon problème est que je travaille sur un classeur Excel, avec beaucoup de formules, dont certaines sont définies par mon module personnel activé. Or pour rendre partageable ce classeur en réseau avec mes collègues, j'ai préféré intégrer les fonctions personnelles VBA définies dans le module xslam personnel. Pour éviter, dans mes formules de feuilles Excel, de voir apparaître le chemin de l'emplacement du module complémentaire personnel xlsam devant mes fonctions personnelles (existantes dans le xlsam et dans mon code VBA des modules intégrés à mon classeur xlsm) plutôt que le nom seul de la fonction utilisée sans aucun chemin, je dois penser à vérifier, avant le chargement de mon classeur xlsm, que le module complémentaire personnel xlsam est bien désactivé (dans les options Fichier/Options/Compléments/Atteindre les compléments Excel).
Si je ne pense pas à faire cela et que le module complémentaire personnel est malencontreusement activé, toutes mes formules faisant appel aux fonctions VBA définies dans le module complémentaire se retrouvent affichées avec le chemin du module complémentaire ! Si je ne fait pas gaffe et que j'enregistre, je suis bon pour un sacré nettoyage de toutes les formules du classeur...
Donc ma question est de savoir s'il est possible de coder en VBA la désactivation de mon module complémentaire personnel xlsam à l'ouverture du classeur xlsm.
J'ai essayé la solution ci-dessous, mais quelque-chose ne marche pas ou bien ce n'est pas la bonne méthode...

Voici mon code, implémenté dans l'objet du classeur thisWorkbook:
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
Option Explicit
Option Base 0
 
Public Sub DesactiverMesMacrosComplementaires()
    Dim xlam$, titre$, chemin$
 
    On Error GoTo sortie
    chemin = "C:\Users\pjebeily\AppData\Roaming\Microsoft\AddIns"
    xlam = chemin & "\MacroComplementaires_Paul.xlsam"
    titre = "MacroComplementaires_Paul"
 
    If Application.AddIns(titre).Installed Then
        Workbooks(xlam).Close
        Application.AddIns(titre).Installed = False
    End If
    Exit Sub
sortie:
    MsgBox "Macro complémentaire " & titre & " déjà désactivée..."
End Sub
 
 
Public Sub ActiverMesMacrosComplementaires()
    Dim xlam$, titre$, chemin$
 
    On Error GoTo sortie
    chemin = "C:\Users\pjebeily\AppData\Roaming\Microsoft\AddIns"
    xlam = chemin & "\MacroComplementaires_Paul.xlsam"
    titre = "MacroComplementaires_Paul"
 
    If Not (Application.AddIns(titre).Installed) Then
    Workbooks.Open xlam
    Application.AddIns(titre).Installed = True
    End If
    Exit Sub
sortie:
    MsgBox "Macro complémentaire " & titre & " déjà activée..."
End Sub
 
Private Sub Workbook_Open()
    DesactiverMesMacrosComplementaires
End Sub
Son exécution plante sur la ligne . Si quelqu'un a une idée...
@+
Paul