Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Créer fonction xlam sans liaison

osiris79

XLDnaute Nouveau
Bonjour à tous,

J'ai crée ma première fonction dans un fichier xlam dans le but de l'utiliser dans différentes cellules excel.
Cette fonction ressemble à ça :
Code:
Function RDM(CAS As Integer, E As Double, I As Double, Q As Variant, L As Variant, Resultat As String) As Double

    Application.Volatile
    'Beaucoup de calculs compliqués à partir des différentes variables
    RDM = Quelquechose
    
End Function
Cette fonction est enregistré dans un fichier RDM.xlam qui est soigneusement rangé dans C:/user/.../AppData/Roaming/Microsoft/AddIns/

Jusque la tout va bien, je l'active dans les macros complémentaire et je peux utiliser cette fonction dans n'importe quel fichier excel en tapant la formule =RDM(gnagnagna). C'est trop bien.

Malheureusement lorsque je vais dans données/connexions/modifier les liens, je me rends compte qu'une liaison a été créée:
Source: RDM.xlam
Emplacement: C:/Users/.../AppData/Roaming/Microsoft/AddIns/

Resultat, lorsque je vais sur un autre ordinateur, que je charge correctement le fichier RDM.xlam dans les compléments excel, et que j'ouvre une fichier xlsx qui utilise la fonction RDM(gnagna), j'ai un message d'erreur de liaison, il faut les mettre à jour ou quelques chose. Simplement parce que le "user" s’appelle "bureau" au lieu de "maison" par exemple.
Si je fais ignorer les liaisons par exemple, je me rends compte que chaque cellule utilisant la fonction est écrite de la façon suivante:
='C:/Users/.../AppData/Roaming/Microsoft/AddIns/!RDM(gnagna)'

Ma question: comment créer une fonction sans créer de liaison au fichier xlam ?

Merci de votre attention.
 

Dranreb

XLDnaute Barbatruc
Re : Créer fonction xlam sans liaison

Bonjour.

Je pense que c'est rigoureusement impossible, que ça n'a même pas de sens.
Enregistrez une nouvelle macro, pendant que ça enregistre, modifiez la liaison.
Inspirez vous du code engendré pour rectifier la liaison automatiquement à l'ouverture du fichier en fonction de son Path.
Méthodes en rapport: LinkSources et ChangeLink.
Le type à employer dans votre cas est xlExcelLinks
 
Dernière édition:

osiris79

XLDnaute Nouveau
Re : Créer fonction xlam sans liaison

Bonjour,

Tout d'abord merci de vous être penché sur mon problème.

Ce que je ne comprends pas c'est pourquoi mes fonctions ont des liaisons alors que les fonctions complémentaires "Morefunc" par exemple n'en ont pas ?
Lorsque j'écris =DECALERFEUILLE(gnagna), il n'y as pas de nouvelle liaison de créée.
Lorsque j'écris =RDM(gnagna), une nouvelle liaison est créée.

Si j'utilise LinkSources et ChangeLink à l'ouverture des fichiers, il faut donc que chaque fichier soit en xlsm, ce qui n'est pas le but recherché.
Une solution plus simple serait de placer le fichier xlam dans C:\fonctions\RDM.xlam sur chaque ordinateur. De cette façon le nom d'utilisateur ne posera plus de problème.
Mais avec ces deux solutions, on contourne le problème.

Quel est donc la différence entre une fonction complémentaire morefunc et ma fonction complémentaire personnelle ?

Je me dis peut être naïvement qu'une fonction n'a pas de liaison. Pour moi, lorsque j'écris une fonction dans une cellule, excel recherche la correspondance à cette fonction, si il ne trouve rien il écrit #VALEUR!
Par exemple, si j'écris =DECALERFUEILLE(gnagna) il affiche un résultat. Si je désactive le module complémentaire Morefunc, il affiche #VALEUR!

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Créer fonction xlam sans liaison

J'avoue que vous me posez une colle. Dans ma version je ne connais que xls. C'est comme si tout était d'office xlsm et c'est très bien comme ça. J'ignore comment se fait le lien avec un classeur de macro complémentaire fourni, s'il ne donne pas lieu à une liaison. Il y a bien la mise en référence du projet VBA du complément, mais elle ne touche à ma connaissance que les utilisations VBA.
 

Discussions similaires

Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…