Une fonction qui retourne un tableau

Résolu
adilino7 Messages postés 5 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 14 avril 2009 - 14 avril 2009 à 14:29
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 14 avril 2009 à 19:51
 salut;
svp je veux coder une fonction qui me retourne un tableau
j'ai essayé le code suivant mais ça mache pas
qq peut m'aider

Function contrainte_totale() As Variant
  Dim k As Integer
  Dim i As Integer
  Dim segmahZ(30)  As Double

   segmahq = ((Tan(45 - (Val(form4.Text2))) ^ 2 * (Val(form4.Text1))))           'segmahq=ka*q'
   For k 1 To k Val(form4.Text1)
          z = (k / 2)
          n = z / (Val(form4.Text1))                  'Z/H'
          m(1) = (Val(form4.Text9)) / (Val(form4.Text1))           'm=Xt/H'
          m(2) = (Val(form4.Text9) + Val(form4.Text7)) / (Val(form4.Text1))            'm=(x+d2)/H'
          m(3) = (Val(form4.Text9) + Val(form4.Text7) + Val(form4.Text8)) / (Val(form4.Text1)) 'm=(x+d2+d3)/H

          m(4) = (Val(form4.Text9) + 2 * (Val(form4.Text7)) + Val(form4.Text8)) / Val(form4.Text1)

          segmahs = ((Tan(45 - Val(form4.Text2) / 2) ^ 2) * Val(form4.Text3) * z)
 
          Sum = 0   For i 1 To i 4

  If m(i) > 0.4 Then

     segmahc(i) = ((1.77 * (m(i)) ^ 2 * n ^ 2) / ((m(i)) ^ 2 + n ^ 2) ^ 3) * (Val(form4.Text10) /Val(form4.Text1) * Val(form4.Text1))

           Else
              segmahc(i) = ((0.28 * n ^ 2) / (0.16 + n ^ 2) ^ 3) * (Val(form4.Text10) / Val(form4.Text1) * Val(form4.Text1))

        
 End If

          Sum = Sum + segmahc(i) + (segmahc(i)) * Cos(1.1 * o(i))

    Next i
 
  segmahZ(k) = Sum + segmahq + segmahs
 
  Next k
 
  contrainte_totale = segmahZ
 
End Function

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 avril 2009 à 19:51
Salut
As-tu essayé de dimensionné ta fonction en tableau :
   Function contrainte_totale() As Variant()
Essaye aussi de respecter le format :
Ton tableau est dimensionné en Double : Pourquoi la fonction serait-elle en Variant ?
   Function contrainte_totale() As Double()

Sinon, utiliser le passage de paramètre ByRef :
ByRef signifie que le paramètre passé reviendra avec d'éventuelles modifs faites dans la fonction qui deviendra une Sub :
   Sub contrainte_totale(ByRef segmahZ() As Double)
Ceci veut dire que tu dimensionnes la variable tableau avant d'appeler la Sub, et celle-ci travaillera avec le tableau que tu lui auras fourni :
   Dim monTableau(30)  As Double
   Call contrainte_totale(monTableau)
et bien sûr, il faut supprimer le dimensionnement de ce tableau dans la Sub
(le nom de la variable déclaré dans la définition de la Sub peut porter le même nom que le tableau lui-même)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Rejoignez-nous