Excel: Fonction udf pointant vers mauvaise dll?

Résolu
micmerle Messages postés 32 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 août 2006 - 2 août 2006 à 09:56
micmerle Messages postés 32 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 août 2006 - 3 août 2006 à 10:01
Bonjour,
Je suis en train de devenir fou! Je ne comprends pas bien ce qu'il m'arrive et il me manque peut etre des éléments:
1/ une feuille a été développé avec des fonctions UDF définis dans VBA . VBA fait référence à un composant com. Disons que f1 et f2 sont des UDF et que sur la feuille, on utilise que f1.
2/ plus tard, une nouvelle dll a été développée avec les memes définitions de fonction. On utilise le automation et du coup les fonctions peuvent etre appelées sans code VBA.
Parfait ca marche très bien sur un nouveau classeur mais...
SI je reprends le classeur créé en 1/ , f1 ne marche pas (#NAME). Si je préfixe le nom de f1 par le nom de la dll (=nomDll.f1(...)) ca marche mais le préfixe disparait et au coup d'après, le #NAME réapparait. f2 marche.
J'ai l'impression que le classeur a gardé en mémoire de mauvaises définitions de fonctions (on peut voir dans les registres vers quoi pointe une définition fonction ou?). Ou avez vous une autre idée? Une solution?
Merci pour votre aide
Michael

4 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
2 août 2006 à 22:34
Salut,


L'idée n'était pas de la désinstaller de la base de registre. En fait,
ça dépend des DLLs; certaines doivent être installées avec regsvr32
mais d'autres non... Dans ton cas, il semblerait que oui.


Comme un des 2 programmes fonctionnait et que l'ancien ne fonctionnait
pas, j'ai pensé qu'Excel, dans son fichier "compilé", gardait en
mémoire l'ancienne version d'où conflit. Donc, s'il y avait eu une
référence à l'ancienne DLL dans la partie VBA de l'ancien projet, il
aurait fallu créer une nouvelle référence à la nouvelle DLL après avoir
éliminé l'ancienne référence.................

ouf !  Pas évident à expliquer... ¦¬)


Mais le plus simple serait peut-être de refaire le fichier qui ne
fonctionne pas en en créant un nouveau (?) Mais ça, c'est à toi de voir.

MPi
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
2 août 2006 à 11:10
Salut,


Est-ce que cette DLL est référencée dans le projet ? Si oui, il
faudrait peut-être essayer d'enlever la référence à l'ancienne DLL puis
de la recréer en utilisant le nouveau fichier ?


Une idée comme ça ... mais Excel pourrait le refuser parce que déjà utilisée...

MPi
0
micmerle Messages postés 32 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 août 2006
2 août 2006 à 15:01
Merci pour ta réponse MPi,


Je l'ai désinstallée et vois plus rien dans la base de registres. Mais de toute facon j'ai fini par craquer, je vais essayer de recoder et de faire des API visibles par VBA comme ca devrais plus y avoir de prob... du moins si j'arrive à le faire... 


 
0
micmerle Messages postés 32 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 août 2006
3 août 2006 à 10:01
Merci MPi,
J'ai reprogrammé mon nouveau code pour qu'il doive etre appelé via VBA et en passant j'ai aussi changé le prog ID et le GUID. Bon là ca marche et ca été moins ch. que je pensais. J'y ai juste perdu qq cheveux
Michael
0
Rejoignez-nous