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 :

Boucler sur parametres dune fonction


Sujet :

Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Par défaut Boucler sur parametres dune fonction
    Bonjour tout le monde

    Jia une fonction avec 8 parametres
    qui sont traite pareil,
    comment boucher sur ces 8 parametres

    (pensait for each collection in object mais ca marche pas )

    merci par avance

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

    Le mieux serait de mettre la fonction sur le forum pour se rendre compte de ce qu'elle fait.

    Philippe

  3. #3
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Par défaut
    je suis entrain de lecrire
    dans l'idee cest ca mais je peux avoir 3 ou 50 parametres enfait, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public  function TESTVRAI(Product, PRIX, DATE ) as boolean
     
    for each object in collection
     
    if object <> range("X" & object).value then 
    trouvee = false
    else
    trouvee = true
    exit for
    end if
     
    testvrai = true
    end function
    donc mes 2 questions:
    comment fairepour que ma fonction accepte une infinite de parametres
    et comment taper dasn la liste des parametres...
    MERCI par avance

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après ce que tu décris, j'utiliserais ParamArray
    Extrait de l'aide d'excel
    Le mot clé ParamArray permet à une fonction d'accepter un nombre variable d'arguments. Dans la définition suivante, FirstArg est transmis par valeur.
    [EDIT]
    A lire sur le sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Par défaut
    je vais essayer.
    jespere que ca reagi pareil entre la function et les sub
    bref a tester je te dirai mais ca risque de maider pas mal

    merci bcp

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui, cela fonctionne aussi bien avec les fonctions qu'avec les SUB.
    Cependant ParamArray ne peux coexister avec les arguments optionnels. J'aurais plutôt tendance à l'utiliser pour les fonctions personnalisées ou quand on doit passer un tableau.
    Une autre approche est d'envoyer comme argument une variable de type string séparé par un caractères comme par exemple ";" que tu peux combiner avec un autre caractère comme "," ou autre et que tu décomposes avec la fonction Split qui renvoie un tableau. C'est l'option que j'utilise.
    Par exemple
    J'ai écrit une procédure qui fait un tableau croisé dynamique en fonction de plusieurs paramètres dont un est le filtre.
    Imaginons que j'ai deux filtres à passer avec la valeur à filtrer
    L'argument (optionel) que je passe est Optional Filter = "Date:=05/2/2013;Code:=Toto"
    Je fais appel une première fois à la fonction avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table = Split(Filter,";")
    pour obtenir les champs à filtrer.
    Cela me donnera un tableau avec table(0) = "Date:=05/2/2013" et table(1) = "Code:=Toto"
    Et ensuite un deuxième Split par élément Split(Table(0),":=") qui me donnera en 0 le nom du champs à filtrer et en 1 la valeur à filtrer.
    Mais rien de tel qu'un petit code de démonstration qui passe un argument représentant trois champs à filtrer contenant chacun une valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub SplitDemo()
     Dim FieldFilter As String
     FieldFilter = "Date:=4/2/2013;CodeSto:=A2;CodeLiv:=Toto"
     MsgBox "Arguments multiples passés " & myDemo(FieldFilter), vbInformation + vbOKOnly, "Démonstration de Split"
    End Sub
    Function myDemo(Optional fieldPage As String) As String
     Dim myFilter() As String, FilterTo() As String
     Dim filter As String, f As Byte, Elem As Byte
     Dim txt As String
     myFilter = Split(fieldPage, ";")
     For f = 0 To UBound(myFilter)
      FilterTo = Split(myFilter(f), ":=")
       txt = txt & vbCrLf & vbTab & "Filtre " & f & " Champs " & FilterTo(0) & " avec comme valeur " & FilterTo(1)
     Next
     myDemo = txt
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Boucler sur un curseur parametré
    Par ibtissamr dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/02/2009, 17h33
  2. Réponses: 2
    Dernier message: 24/12/2007, 09h53
  3. init var et test sur parametre de fonction
    Par Marc_3 dans le forum Linux
    Réponses: 2
    Dernier message: 01/02/2007, 12h40
  4. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29
  5. Dérivation dune fonction
    Par srvremi dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/07/2002, 14h21

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