Compter le nombre d'arguments d'une fonction

Bonjour,

j'aimerais savoir s'il existe un moyen de compter le nombre d'arguments entrés en variable d'une fonction.

Je m'explique :

je souhaite créer une fonction collant ensemble plusieurs vecteurs colone pour en faire une seule et même matrice

le code ressemblerait à ça :

Function colle(col1, col2, Optional col3, Optional col4, ...)

'insère ici ton code pour compter le nombre de colones

... 'corps du code

end function

Ce que je veux c'est connaitre le nombre de "col" afin de pouvoir boucler dessus dans la suite de la procédure.

Je pense que c'est possible étant données les fonctions de base d'excel pouvant intégrer 255 variables, où alors ils ont codé les 255 cas... mais ça me parait stupide.

Merci d'avance

L.

Bonsoir,

Une piste, en testant si les arguments optionnels sont présent (attention, avec la fonction "IsMissing()", les arguments doivent être de type Variant, ce qui est le cas apparemment sinon, le résultat sera erroné) :

'attention, une fonction doit retourner une valeur ou un tableau de valeur mais
'n'exécute pas d'action sur des Ranges ...!
Function colle(col1, col2, Optional col3, Optional col4, Optional col5, Optional col6)

    Dim NB As Integer
    Dim I As Integer

    NB = 2

    If Not IsMissing(col3) Then NB = 3
    If Not IsMissing(col4) Then NB = 4
    If Not IsMissing(col5) Then NB = 5
    If Not IsMissing(col6) Then NB = 6

    For I = 1 To NB

        'ici ton code...

    Next I

    'pour le test
    colle = NB

End Function

Sub test()

    MsgBox colle(1, 2, 3, 4)

End Sub

Hervé.

Bonsoir,

je vais tenter ça demain mais ça à l'air très bien pour ce que je veux faire.

Ca me conduit au porblème suivant : l'incrémentation dans une boucle de noms de variables (mes col1, 2, 3, 4, ....)

je suis certain que

'ici je colle de vecteurs lignes mais c'est sans importance
for i = 1 to NB
    for j = 1 to Ubound(col1, 2)
        Matrice(i, j) = col & i(1, j )
    next j
next i

ne va pas fonctionner

j'ai eu un cas similaire il y a quelque temps et je crois que j'avais trouvé un moyen en faisant autrement mais je ne me souviens plus.

Je m'y atèle demain et je vous reviens,

Merci

Bonsoir

Juste pour info

Sub test()
Dim Arg1, Arg2, Arg3, Arg4

  Range("E8").ClearContents
  Arg1 = 100
  Arg2 = "Hello"
  Arg3 = Range("E8").Address
  Set Arg4 = ActiveSheet
  test1 Arg1, Arg2, Arg3, Arg4
End Sub

Sub test1(ParamArray Toto())
Dim Msg As String

  Msg = "Il y a " & UBound(Toto) + 1 & " paramètres" & vbLf
  Msg = Msg & "Nom de la fenêtre " & Toto(3).Name & vbLf
  Msg = Msg & "Nombre " & Toto(0) * 5 & vbLf
  Msg = Msg & Toto(1) & " World" & vbLf
  Msg = Msg & "L'adresse est " & Toto(2)
  Range(Toto(2)).Value = Msg
End Sub

Merci à vous 2

Je ne connaissais pas les deux façons proposées et dans le cas présent je vais utiliser la procédure décrite par Banzai qui permet un code plus court.

Je garde le IsMissing() dans un coin de ma tête pour plus tard.

Bonne journée

Rechercher des sujets similaires à "compter nombre arguments fonction"