Une fonction qui retourne un tableau [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
14 avril 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
 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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)