Fonction : Tableau en argument d'entré

Fermé
Alsi270 Messages postés 23 Date d'inscription lundi 28 octobre 2013 Statut Membre Dernière intervention 17 avril 2016 - Modifié par crapoulou le 17/04/2016 à 16:14
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 18 avril 2016 à 15:54
Bonjour,

Dès que je crée une fonction qui prend un vecteur en entrée et lorsque je l'essaye excel me dit à chaque fois : #valeur!

je poste les 2 fonctions en question au cas où :

Function Mult(ByRef M() as Double) as Double

Dim a As Integer
a = 1
Dim k As Integer
For k = 0 To UBound(M())
a = a * M(k)
Next

Mult = a

End Function

et la seconde :

Function Sol(ByRef MaBr() As Double) As Double

Dim k As Integer
Dim a As Double
a = 0

Dim Tac As Double
Tact = 0.5
Dim TacSup As Double
TacSup = 1
Dim TacInf As Double
TacInf = 0

Do
    Dim alpha(UBound(MaBr())) As Double
    For k = 0 To UBound(alpha())
        alpha(k) = 1 / (1 + Tac) ^ k
    Next
    
    For k = 0 To UBound(MaBr())
        a = a = MaBr(k) * alpha(k)
    Next
    
    If a < 0 Then
        TacSup = Tac
        Tac = TacSup - TacInf / 2
    Else
        TacInf = Tac
        Tac = TacSup - TacInf / 2
    End If
    
Loop While ((a > 10 ^ -4 Or a < 10 ^ -4) And (a > 10 ^ -10 Or a < 10 ^ 10))

Sol = Tac

End Function


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


3 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 avril 2016 à 14:36
Bonjour,

me dit à chaque fois : #valeur! Peut-etre, mais comment appelez-vous ces fonctions ????
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 18/04/2016 à 15:27
Bonjour à tous les deux

Un exemple où le tableau M est passé à ta fonction Mult

Public Function Mult(ByRef M) As Double
Dim a As Long, k As Long
a = 1
For k = 0 To UBound(M)
a = a * M(k)
Next
Mult = a
End Function

Public Sub OK()
Dim T(), v As Double
T = Array(1, 2, 3, 4)
v = Mult(T)
MsgBox v
End Sub
Cdlmnt
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 avril 2016 à 15:42
Bonjour,

#valeur! cela suppose que l'appel est fait d'une cellule, donc comment fait-il pour passer un tableau a ces fonctions ?? Me parait curieux !!!
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 18/04/2016 à 15:49
Salut f894009

Exact !
Si la fonction est destinée à être utilisée dans la feuille et qu'on doit lui passer un tableau situé dans la feuille

Public Function Multi(T As Range) As Double
Dim a As Long, cel As Range
a = 1
For Each cel In T
a = a * cel.Value
Next cel
Multi = a
End Function

Cdlmnt
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 avril 2016 à 15:54
Re,

Salut, ca roule

Eh ben voila!!!
0