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-E] Une fonction Excel dans une fonction VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut [VBA-E] Une fonction Excel dans une fonction VBA
    Bonjour à tous,

    voilà mon problème : au boulot nous utilisons une fonction Excel qui fonctionne avec un progiciel et effectue des requêtes
    sur une base de données. nous avons besoin de 13 paramètres pour effectuer ces requetes, et ces paramètres doivent
    être du type : "param1#" & E1;"param2"&E2, etc... Autant dire que ce n'est pas très pratique, d'autant qu'il n'y
    a pas d'aide contextuelle lorsque l'on clique sur "fx"

    Voilà ce que j'ai bien tenté de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function Requete(Scenario, Entite,[...] Etc)
     
    	vScenario="Scenario#" & Scenario
    	vEntite="Entite#" & Entite
    	[...] Etc
     
    	Requete="=HsGetValue(" & vScenario & ";" & vEntite & ")"
     
    End function
    Mon problème :

    lorsque je tape la fonction : =Requete("REEL";"FRANCE";...) cette fonction ne me renvoie pas le résultat de la fonction
    "HsGetValue" mais la chaine "=HsGetValue("REEL";"FRANCE";...)

    Y aurait-il un moyen d'éviter cela ?

    Merci pour votre aide
    laloune

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	vScenario="Scenario#" & Scenario
    	vEntite="Entite#" & Entite
    LACELLULEENQUESTION=application.WorksheetFunction.HsGetValue(vScenario, vEntite)
    avec application.WorksheetFunction tu as la liste de toutes les fonctions que tu peux utiliser sur ta feuille de calcul

    Dans ce cas, tu auras juste le résultat de la fonction, je sais pas si c'est ce que tu désires...ou si tu préfères que la fonction soit écrite aussi...

  3. #3
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Tu peux peut-être utiliser la fonction WorksheetFunction mais je n'en suis pas sûr car c'est normalement réservé à certaines fonctions d'Excel

    +

    Théo

  4. #4
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Theocourant
    Bonjour,

    Tu peux peut-être utiliser la fonction WorksheetFunction mais je n'en suis pas sûr car c'est normalement réservé à certaines fonctions d'Excel
    en effet, il ne me propose pas ma fonction "HsGetValue" lorsque je tape Application.WorkSheetFunction dans la Function.

    cela dit, j'ai un .xla d'où semblent provenir ces fonctions inhérentes au progiciels (mais il est protégé, hélas...) ; peut-être y a-t-il un moyen de choper ces fonctions à travers ce xla...

    Merci pour votre aide en tous cas
    laloune

  5. #5
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Re,

    Juste une idée : n'est-il pas possible d'appeler directement la fonction et d'écrire simplement le résultat ? Ou est-il nécessaire d'écrire la formule dans la cellule ?

    +

    Théo

  6. #6
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    n'est-il pas possible d'appeler directement la fonction et d'écrire simplement le résultat ?
    si j'ai bien compris ta remarque, voici ma réponse : la fonction qui effectue la requête ne le fait pas de fonction automatique, il faut passer par un menu qui "rafraichit" les fonctions de ce type.

    c'est pourquoi je pense qu'il faut écrire la formule dans la cellule pour que cette fonction soit "pêchée" par le refresh.

    arf j'ai l'impression que ca va être vraiment chaud à faire ce truc... je pensais trouver la fonction hsget dans le xla, mais je ne connais pas le nom des modules... et hors de question de le décompiler ou autre...

    Merci pour votre aide Theocourant et tinmarbusir

    laloune

  7. #7
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    Nouveaux éléments : il se trouve que lorsque dans une cellule, je tape : =HsTBar.xla!HsGetValue(param...)", la fonction m'est correctement renvoyée...

    Cela pourrait-il m'être utile pour l'utiliser dans VBA ? c'est à dire, est-il possible d'appeler cette fonction contenue dans ce HsTBar.xla dans une fonction VBA.

    Merci
    laloune

  8. #8
    Expert éminent sénior

    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
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir

    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox Application.Run ("HsTBar.xla!HsGetValue", Argument1, Argument2, ...)

    bonne soiree
    michel

  9. #9
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    ma foi je n'y croyais pas beaucoup, et pourtant ca fonctionne parfaitement !!!

    Merci infiniment pour l'aide, je vais enfin pouvoir dormir cette nuit

  10. #10
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    euh dernière petite question subsidiaire

    dans mes variables, j'en ai une qui s'appelle "Application", et une autre qui s'appelle "Value", qui sont, si je ne m'abuse, des mots reservé (l'utilisation de Application comme variable m'a renvoyé une erreur)

    j'ai donc trouvé une solution intermédiaire, j'ai précédé toutes mes variables de la lettre "s" (comme string)

    Le problème, c'est que dans l'aide contextuelle de la fonction, il m'affiche maintenant "SApplication", "SValue"... qui sont les noms de mes variables VBA et non les noms des paramètres couramment utilisés par les utilisateurs...

    est-il possible de remédier à cela ?

    Merci
    laloune

  11. #11
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    up (je n'aime pas faire ca mais bon... j'espère que vous m'en excuserez)

    est-ce possible finalement, de remplacer le nom des variables de la fonction par des noms un peu plus sympa ?

    merci pour l'aide
    laloune

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2011, 18h23
  2. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  3. insérer un bouton dans une feuille excel lié à une fonction vba
    Par thierry_b dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/06/2009, 12h14
  4. Réponses: 10
    Dernier message: 18/04/2007, 17h17
  5. passer une feuille excel dans un fonction
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/12/2006, 00h08

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