Voici un exemple pour tester les valeurs passés en ParamArray. Les paramètres de type Tableau sont eux-mêmes détectés.
Option Explicit
'Ti
Function TestParams(X As Single, Y As Single, ParamArray Points()) As Single
Dim Boucle As Integer, NbElts As Integer, NbArrays As Integer
Dim LimiteInf As Integer, LimiteSup As Integer
NbElts = UBound(Points) - LBound(Points) + 1
MsgBox "Points contient " & NbElts & " valeurs"
For Boucle = LBound(Points) To UBound(Points)
If IsArray(Points(Boucle)) Then
'je me limite ici à détecter les tableaux à une seule dimension !
NbElts = UBound(Points(Boucle)) - LBound(Points(Boucle)) + 1
LimiteInf = LBound(Points(Boucle))
LimiteSup = UBound(Points(Boucle))
MsgBox "Argument " & Boucle + 1 & " : Tableau de " & NbElts & " éléments" & _
vbCr & "limite inférieure : " & LimiteInf & _
vbCr & "limite supérieure : " & LimiteSup
Else
MsgBox "Argument " & Boucle + 1 & " : variable de type " & TypeName(Points(Boucle))
End If
Next Boucle
End Function
'J 'ai besoin de connaitre le nombre exact de paramètres passés........
'(X,Y + nombre de Points()) pour traiter la fonction.
Sub TestParamArray()
'tt est une variable de type Variant initialisé par un Array
'ff est un tableau à 1 dimension
Dim tt, ff(1 To 3) As Single
tt = Array(1, 2, 3, 4, 5, 6)
TestParams 2, 3, tt, "test", #3/3/2021#, 6.2, ff
End Sub