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 :

[VBA]Atteindre une fonction dans un xla


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut [VBA]Atteindre une fonction dans un xla
    Bonjour à tous !

    Ce matin, j'ai trouvé une méthode intéressante mais j'ai besoin de votre aide.

    J'ai suivi ce tuto-ci : http://support.microsoft.com/default.aspx?scid=kb;en-us;Q256624

    =MyFunctionWrapper(2000, 18, 7.5) fonctionne bien quand on l'entre dans une cellule mais lorsque je veux appeler la fonction dans le code VBA, il met qu'il ne connait pas la fonction "Compile Error: Sub or Function Not Defined"

    J'ai cherché après la solution mais je n'ai pas trouvé.

    Mon code est celui du lien car j'ai testé avec leur code d'abord

    Merci de votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je pense qu'il manque une référence au nom de fichier de la macro complémentaire (xla)
    Juste une idée. Comme j'ai déjà fait ça, je regarde si je retrouve.

    A+

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.Run("maProcedure.XLA!MyFunctionWrapper", 2000, 18, 7.5)

    bonne journée
    michel

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci SilkyRoad, m'évite un fastidieuse recherche...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    Citation Envoyé par SilkyRoad
    bonjour

    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.Run("maProcedure.XLA!MyFunctionWrapper", 2000, 18, 7.5)

    bonne journée
    michel
    Voilà ca marche.

    Je vous remercie de m'avoir aidé.
    Je met Résolu dans le titre du topic??

    Bonne journée à vous !

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, pour mettre résolu, tu as un bouton en bas à gauche
    Voilà, c'est fait...

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    Ha voilà j'ai retiré le résolu car j'ai un problème :

    Edité.

    J'ai un autre problème mais je vais continuer à chercher je fais appel à vous si je ne trouve pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    Bon voilà.

    J'ai un problème et je ne le comprends pas.

    J'ai vérifié tous les noms et ce n'est pas ca.

    Je poste le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function GetAttribute(ByVal sPerNumber As String, ByVal sAttribute As String) As Variant
       Dim oAdd As Object
       Set oAdd = Application.COMAddIns.Item("SimulationToolAddIn.Connect").Object
    [b]   GetAttribute = oAdd.GetAttributeWrapped(sPerNumber, sAttribute)[/b]
       Set oAdd = Nothing
    End Function
    L'erreur se fait sur la ligne en gras et est la suivante : Run time error'13' type mismatch

    Mauvais type :

    Ma fonction dans le addin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function GetAttributeWrapped(ByVal sPerNumber As String, ByVal sAttribute As String) As Variant
     
    ' Le code étant assez long, je l'ai retiré car ca ne rentre meme pas dans la fonction 
     
       GetAttributeWrapped = vReturn
     
    End Function
    A priori, quand je rentre 000000 comme numéro, il ne doit rien renvoyer et donc ca passe.
    Par contre, quand je rentre 000002, il doit renvoyer un string, etc (=>variant) ben ca plante avec l'erreur décrire ci dessus

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Supprime ta déclaration
    Dim oAdd As Object
    Je crois avoir remarqué que VBA(97) ne l'accepte pas si tu fais un set ensuite
    Sans garantie, tu vérifies

    A+

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    Citation Envoyé par ouskel'n'or
    Supprime ta déclaration
    Dim oAdd As Object
    Je crois avoir remarqué que VBA(97) ne l'accepte pas si tu fais un set ensuite
    Sans garantie, tu vérifies

    A+
    Au fait, c'était un conflit dans les références. Microsoft DAO 3.x et Microsft ActiveX Data Objects ...

    Mais bon, j'ai encore un problème.
    Lorsque je lance une nouvelle feuille excel (le xla est au startup), j'écris =GetAttribute(1,"Bla") ca fonctionne.

    Par contre, dans une autre ca ne fonctionne pas, il me met #NAME. J'ai pourtant les memes références j'ai vérifié.

    De plus, j'écris la function en minuscules et il me met les maj tout seul, il la reconnait donc.
    Et elle est dans la liste des fonctions d'excel..

    Edit: Bon voilà, au fait c'est pcq j'ai un dll activex qui est aussi dans le projet mais là dedans je ne sais pas mettre toutes les fonctions. Or, il veut aller chercher le getattribute dans cette dll la au lieu de passer par le xla.
    En sachant que : Application.Run("SimulationToolWrap.xla!GetAttribute", 1, "Bla") ne passe pas en code excel, y a t il un moyen pour forcer à chercher ailleurs que dans le dll activex?

Discussions similaires

  1. [XL-2010] Ecriture d'une fonction dans une cellule via VBA
    Par Seb-Office dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/11/2010, 17h39
  2. [VBA-E] Une fonction Excel dans une fonction VBA
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/07/2006, 10h21
  3. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37
  4. Réponses: 4
    Dernier message: 26/01/2005, 13h08
  5. Programmation d'une fonction dans Rn
    Par simone.51 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/11/2004, 11h30

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