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

Excel Discussion :

Passer un nombre indéfini de paramètres dans une UDF


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    DSI
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 33
    Points
    33
    Par défaut Passer un nombre indéfini de paramètres dans une UDF
    Bonjour,

    Je ne sais pas si c'est le bon forum pour poster ma question, mais je tente ma chance quand même.

    J'ai besoin d'implémenter une UDF avec un nombre de paramètres dynamique, à l'instar de : =Somme(var;var2;....)

    J'ai utilise un add-in Automation Excel pour d'autres raison que les UDFs (Menus barres d'outils et autres fonctions). Dans ma classe Functions j'ai quatre UDFs avec des paramètres définis en mode conception et fonctionnent bien.
    J'ai une autre fonction TestDynamicParams déclarée comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public object TestDynamicParams (string myFirstParam, params object[] args)
    {
     
    }
    J'ai réussi à avoir mon TestDynamicParams dans la liste des Fonctions de mon Add-in, mais lorsque je fais appel à cette UDF (=TestDynamicParams ("Test";A1;$B2) )elle me retourne toujours #Valeur.

    Normalement, la type attendu dans les paramètres args est Excel.Range, mais j'ai changé exprès en object en pensant que le problème provient de là, malheureusement ça n'a rien changé.

    NB. L'utilisation de l'attribut [Optional] est très lourd car il me faut une signature avec un maximum de paramètres (30?).

    Quelqu'un pourra m'aider ou m'indiquer où je peux trouver une solution?

    Merci d'avance de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut,

    Petite question : qu'est-ce que tu appelles une "UDF" ?

    A plus.

    Marco.

  3. #3
    Nouveau membre du Club
    Profil pro
    DSI
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 33
    Points
    33
    Par défaut
    Désolé.

    UDF : User Defined Function
    on les appelle communément les fonctions personnalisées de Excel (des fonctions programmées qu'on ajoute à Excel en plus des fonctions standard : Somme, Moyenne ...).

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut,

    Merci de cette précision.
    Alors pour ton problème.

    Apparemment ton code ressemble d'assez près à un code Java et tu dois vouloir le traduire en VBA ?

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
    Public Function TestDynamicParams (byval myFirstParam as string, byref params() as string) as String 
     
    End Function
    Remarque un tableau VB passé en argument d'une fonction ou d'un procédure est toujours en Byref.

    Ce que tu peux faire c'est passer une chaine de caractères qui représente chacun de tes paramètres séparés par un caractère comme la virgule ou le "¤".

    Ensuite utilise la fonction "split" de VB. Le résultat de cette fonction se comporte comme un tableau et tu peux accéder à chacun des éléments individuellement ou dans une boucle.

    Peut-être est-ce plus simple ?

    Je ne sais pas si je réponds bien à ta question.

    Et toi est-ce que tu n'aurais pas une petite idée sur mon problème d'accès aux données s'il te plait ?

    A plus.

    Marco.

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2009, 16h01
  2. Passer un nombre indéfini de paramètres à une fonction
    Par Fifaine dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2009, 17h55
  3. Réponses: 2
    Dernier message: 11/10/2006, 14h37
  4. Réponses: 1
    Dernier message: 21/03/2006, 15h29

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