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 :

Appeler une fonction depuis un autre module


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut Appeler une fonction depuis un autre module
    Bonsoir à tous, je viens une nouvelle fois faire appel à toutes les lumières de Developpez. Je cherche à faire appel à une fonction présente dans une feuille xla.

    Je vais essayer d'être le plus clair possible. J'ai télécharger un module (feuille XLA) sur Internet permettant de récupérer les données de notre CRM (Salesforce) sur Excel. Celui fonctionne à merveille et permet de faire des requêtes relativement puissantes. J'ai paramété mes requêtes et celles-ci fonctionne très bien.

    Maintenant dans un classeur, je développe en VBA un module permettant la mise en forme de données assez simple. Cependant, je souhaiterai pouvoir faire appel à une fonction contenue dans cette feuille xla (qui officiellement ne contient qu'un menu). J'ai essayé un faisant un call bête et méchant mais sans succès...

    Avis à toutes les bonnes volontés qui pourraient m'éclairer.

    Ps : j'ai essayé d'être le plus clair possible. N'hésitez pas à me faire part de votre incompréhension totale

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Déjà, je pense qu'il y a un petit problème de vocabulaire.

    On appelle pas une fonction avec un Call, cela est pour les routines (sub). Une fonction reçoit en général des paramètres (comme une routine), mais retourne une valeur (chaine ou nombre par exemple).

    Comment sais-tu que cette fonction existe, car tu n'as pas accès au code ?

    Il faudrait donc que tu donnes plus de détails.

    Philippe

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut
    Bonjour Philippe, merci de ta réponse. Effectivement, au niveau clarté c'est pas facile à expliquer.
    J'ai effectivement accès au code de toutes les fonctions présentes dans l'add-in Salesforce pour Excel. Quand j'ouvre la feuille, xla, je l'ajoute comme compléments aux macros d'excel. L'ensemble du code dans VBA est au dessus de VBA Projet dans une autre ensemble salesforces. Dedans, il y'a tous les codes permettant la création du menu, la connexion au CRM, l'ajout de requête,...

    Pour te donner un exemple, voici l'architecture en photo. Je veux faire appel à la fonction sfQueryAll qui est bien présente dans cette feuille et dont voici le code. Je voulais éviter d'avoir a faire un copier coller de l'ensemble du code, car cette fonction fait appel à une autre,... Je pense qu'il y'a plus simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub sfQueryAll(Optional silent)
      Dim old_pos As Range: Set old_pos = ActiveCell
      Dim used As Range
      Set used = Range("A1", ActiveCell.SpecialCells(xlLastCell).Address)
      If used.Count = 1 Then GoTo done ' nothing on this sheet
      used.Find("*", LookIn:=xlValues).CurrentRegion.Select
     
    '..........  
     
    done:
      old_pos.Select
    End Sub


    Merci à toi pour cet aide.
    Images attachées Images attachées  

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    à toutes fins utiles, il y avait cette discussion, qui est une étape préalable nécessaire.

    Vu que tu appelles une routine à l''extérieur de ton code, il te faut préciser dans ton appel où accéder à cette routine.

    La syntaxe pour appeler cette routine est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run("NomDuProjetVba!Nomdelaroutine", Parametre1,Parametre2,...)
    Donc dans ton cas qqchose du genre (pas testé évidement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run("TonAddinSalesForce.xla!sfQueryAll", VarSilent)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut
    Bonsoir Godzestla,

    Je te remercie vivement pour ta réponse. Désolé, ayant fait le pont, j'avoue avoir bien déconnecté, ceci expliquant ma réponse tardive. Cette solution fonctionne effectivement en appelant la routine (j'aurai appris le vocabulaire indispensable). Par contre, je n'arrive pas à la passer en mode silence.

    Quand j'utilise ta syntaxe, VB me dit attendre :=
    Je ne suis pas assez calé malheureusement pour essayer de passer outre... Si tu as une idée, je suis bien évidemment preneur. Merci encore à toi...

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!!!
    bonjour

    si la référence a ton xla est coché dans outil /références
    dans l'éditeur VBA tu n'a cas écrire le nom de la fonction pour l'appeler comme si elle était dans le même projets

    cela dis pour etre sur le!! """application .run """ fonctionne tres bien


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Appel à une fonction d'un autre module
    Par noftal dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/09/2013, 11h14
  2. appel d'une fonction depuis un autre fichier?
    Par cortex59 dans le forum C++
    Réponses: 1
    Dernier message: 13/03/2009, 15h19
  3. Appeller une fonction depuis un autre site
    Par ProgVal dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2008, 18h01
  4. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  5. Appel d'une callback depuis un autre module
    Par Bayard dans le forum Général Python
    Réponses: 6
    Dernier message: 08/06/2008, 17h47

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