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èmes d'exécution de fonction d'une librairie externe à partir d'une macros Excel 2013 sous Windows 10 [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Problèmes d'exécution de fonction d'une librairie externe à partir d'une macros Excel 2013 sous Windows 10
    Bonjour,

    J’ai développé une librairie (DLL) de fonctionnalités de calculs (en VB .NET) que j'appelle à partir de macros développées dans Excel 2013 dans un fichier XLA.
    Tout a très bien fonctionné sous "Windows 7" jusqu’à présent. Par contre, cela ne fonctionne plus sous "Windows 10".

    Les macros dans Excel 2013 sont toujours bien appelées car j'ai testé l'appel grâce à un point d'arrêt positionné au début de celle-ci.
    Je rencontre des difficultés lors des appels des fonctions qui se trouvent dans la DLL externe et plus particulièrement lors de la déclaration de la classe contenant mes fonctions appelées dans ma macro Excel.

    L’erreur que j’ai dans la macro, c’est: « <Variable objet ou variable bloc With non définie> » et le résultat du calcul dans le tableur Excel est « #VALEUR! ».
    Voici l’extrait de code qui pose problème dans ma macro, où la variable « fnact » est la variable définie vers la classe « clsActuaire » dans ma DLL de fonctionnalités.
    L'image sera certainement plus parlante:

    Nom : Erreur-macro-Excel.png
Affichages : 544
Taille : 26,8 Ko

    Déclaration de ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fnact As New clsActuaire
    With fnact indique « <Variable objet ou variable bloc With non définie> »

    La classe « clsActuaire » est définie en VB .NET comme ceci (afin de pouvoir appeler plus loin la fonction « CD ») :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Strict Off
    Option Explicit On
    Imports System.Math
     
    Public Class clsActuaire
     
    …
     
    Public Function CD(Optional ByVal DuAnnLimit As Short = 0, Optional ByVal DuMoiLimit As Short = 0, Optional ByVal Paiement As enuTyPai = 0) As Double
     
    …
    Voici comment je définis la DLL et les macros :


    1. La DLL de fonctionnalités (développée en VB .NET) est enregistrée dans le système (Windows 10) avec l’instruction suivante :

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm /codebase "%APPDATA%\Ocx\EasyActLibrary.dll" /tlb:"%APPDATA%\Ocx\EasyActLibrary.tlb"

    2. La librairie de fonctions est référencée dans le code de la macro (référence VBAProject) :

    Nom : Enreg-DLL-Macro.png
Affichages : 467
Taille : 21,0 Ko


    3. La référence du fichier XLA dans Excel (compléments) : « Easyactlibrary »

    Nom : Définition-XLA.png
Affichages : 449
Taille : 66,5 Ko


    4. Lors de la rédaction de la formule, Excel retrouve bien la macro (elle est reconnue) :

    Nom : Arguments-fonction-macro.png
Affichages : 440
Taille : 17,9 Ko


    Mais le résultat est « #VALEUR! » car la définition de la variable « fnact » n’a pas été possible (voir plus haut).
    Tout cela fonctionne parfaitement sous Windows 7 depuis plusieurs années mais pas sous Windows 10.
    Le problème semble être l’exécution en elle même.

    Pourriez-vous m'aider à résoudre mon problème ?
    Serait-ce dû à un problème de signature avec la librairie vu que la sécurité sous Windows 10 semble être beaucoup plus sévère ?
    Est-ce dû à une restriction supplémentaire propre dans Windows 10 ?
    Manque-t-il quelque chose dans mes déclarations ?

    Je vous remercie d'avance de prendre le temps de me lire et pour votre aide.
    Vincent

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je pense que tu devrais revenir à la base et "Valider" ton code-source avec VB.net, Windows 10 et Excel 2013. Même avec certains code-sources, cela peut accrocher dès que l'on change de version de VB.net (l'expérience), de version su Système d'exploitation, ou même de version du Framework. Cela m'est arrivé avec de vieux programmes pour Windows xp sur Windows 7, des programmes développés avec VS 2010 et VS2012 essayés avec VS2015 et 2017, qui demandaient des modifications mineures pour s'adapter à des caprices implantés par Microsoft.

    Et si ton code-source passe sans problème avec ta macro dans Excel, essaie avec ta version recompilée.


    P.S. Ta première image vient-elle de VBA ou de VB.net ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Merci beaucoup
    Bonjour,

    Merci beaucoup pour ta réponse clementmarcotte, cela m'a grandement aidé à trouver la solution.

    En résumé, j’ai dû recompiler le code de ma librairie sous Windows 10.
    J’ai également dû la signer avec une clé (mot de passe) car c’est obligatoire sous Windows 10. Pour cela, j’ai dû exécuter le compilateur « VB .NET » en tant qu'administrateur pour pouvoir enregistrer la librairie dans le système (Windows 10). Cela a finalement permis de pouvoir exécuter les fonctionnalités dans Excel sous Windows 10.

    Bonne journée,
    Vincent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/10/2010, 17h47
  2. Réponses: 4
    Dernier message: 10/10/2010, 11h46
  3. Problème d'exécution de fonction avec xajax
    Par hnicola dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/04/2010, 11h16
  4. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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