paramarray

E

Eric

Guest
Hello,

j'ecris une fonction utilisant un incertain nombre de paramètres :

Function Lagrange2D(X As Single, Y As Single, ParamArray Points()) As Single

J'ai besoin de connaitre le nombre exact de paramètres passés........
(X,Y + nombre de Points()) pour traiter la fonction.

merci d'avance pour la solution ............ Eric.
 
T

Ti

Guest
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
 
E

Eric

Guest
Petite Démo très efficace, grace à laquelle j'ai pu réaliser ma fonction (utilisation de UBound() et LBound()), avec "cerise sur le gateau" table multi-dimensionnelle.

Concrêtement, les Points() correspondent aux valeurs X,Y,Z de points connus d'une fonction quelconque et inconnue.
X et Y sont les coordonnées d'un nouveau Point dont on estime par notre fonction la valeur Z, en utilisant les Points() connus.

Il etait donc intéressant de passer à notre fonction les Points() de manière déjà structurée PX(),PY(),PZ(), facilitant ainsi leur utilisation.

Merci à "Ti" & bonne continuation à tous .......... Eric.
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
313 916
Messages
2 103 532
Membres
108 704
dernier inscrit
Nickthebols