Probleme fonction

Probleme fonction - VB/VBA/VBS - Programmation

Marsh Posté le 29-06-2017 à 17:31:19    

Bonjour....j ai beau chercher je ne trouve pas  
 
Je redige une fonction pour effectuer une somme simple
 
Function sum(tabl() As Double) As Double
 
For i = 0 To UBound(tabl)
 
sum = sum + tabl(i)
Next
 
End Function
 
J'en redige une autre qui soustrait un chiffre case apres case..... disons qu on extrait 10 de la serie 5 7 10 15 ....ca nous donne 0 2 10 15
Function spread(tabl() As Double, p As Double) As Double()
 
Dim t As Double
Dim i As Integer
 
ReDim tabl2(UBound(tabl)) As Double
t = p
 
For i = 0 To UBound(tabl)
        'tabl2(i) = p
    If tabl(i) = 0 Then
        tabl2(i) = 0
             
    ElseIf tabl(i) <= t Then
        tabl2(i) = 0
        t = t - tabl(i)
         
    ElseIf tabl(i) >= t And t >= 0 Then
        tabl2(i) = tabl(i) - t
        t = 0
       
    Else
        tabl2(i) = tabl(i)
         
    End If
     
Next
 
spread = tabl2
 
End Function
 
et enfin je fais une derniere fonction(ci dessous) ....peut importe ce qu elle fait en realite.....le probleme est quand je fais appel a  "tabl4(i) = spread(tabl3(), milieu)(i)"  qui doit executer la fonction "spread" cela ne fonctionne pas (il considere que milieu=0) mais je remplace milieu par un vrai chiffre, 5 par ex, cela fonctionne parfaitement ....je suis un peu perdu .....merci pour votre aide
 
 
 
Function active_module_matrix_spread(tabl() As Double) As Double()
 
Dim tabl2(18) As Double
Dim tabl3(18) As Double
Dim tabl4(18) As Double
Dim g As Integer
Dim i As Integer
Dim milieu As Double
 
g = 0
 
    For h = 1 To 18
        tabl2(h) = tabl(h) - tabl(h - 1)
    Next
 
    For i = 0 To 18
        tabl3(i) = tabl2(i) * 12
    Next
 
 
milieu = sum(tabl3()) / 2)
 
For i = 0 To 18
 tabl4(i) = spread(tabl3(), milieu)(i)
Next

Reply

Marsh Posté le 29-06-2017 à 17:31:19   

Reply

Marsh Posté le 29-06-2017 à 17:55:45    

Bonjour,
 
« cela ne fonctionne pas (il considere que milieu=0) »
C'est effectivement parce que milieu = 0 !!!!
Exécute le code en pas à pas tu verras.


---------------
Cordialement, Patrice
Reply

Marsh Posté le 29-06-2017 à 17:58:06    

mais c'est bien cela qui est bizarre car si fais  
range("A1" ).value = milieu ....je n'ai pas 0!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed