Jai besoin d un idee

Résolu
samdd2005 Messages postés 9 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 26 mai 2009 - 25 mai 2009 à 20:56
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 25 mai 2009 à 21:49
salaut jai un prob cand je laise l abalyse il me declare  : indice en dehors de la page  s il vous il y a kekun ki me ghed jai un examain c est urgent vois pouvez voir le  programme :
Private Sub Command1_Click()
Dim Nrprim, h0, EBII, n, M, h, E, b, sigmaresist, Nr, a1, V, aprim1, aprim2, z, nest, dprim, x As Double


h0 = 0.38
EBII = 0.0035
n = 2
M = 9
V = 0.01
h = 0.4
E = 200000
b = 0.3
sigmaresist = 25
Nr = 1
a1 = 0.00039
Nrprim = 2
aprim1 = 0.00039
aprim2 = 0.00039
nest = 0.2
dprim = 0.02
x = 0.01
Dim salim As Boolean
Dim EAS As Long




'Dim EBI(1 To 9) As long
Dim EBI(0 To 9) As Long


Dim sigmaB(0 To 9, 0 To 9) As Long
Dim nb(0 To 9, 0 To 9) As Long
Dim MM(0 To 9, 0 To 9) As Long
Dim EBN(0 To 9, 0 To 9) As Long
Dim EASS(0 To 9) As Long
Dim sigmas(0 To 9) As Long
Dim EASprim(0 To 9) As Long
Dim sigmasprim(0 To 9) As Long
Dim Ro(0 To 9) As Long
Dim aprim(0 To 1) As Long
Dim i, j, w, y As Integer


For i = 1 To n
EBI(i) = (i * EBII) / n
salim = True


 


While (x <h And salim True)


 


'nb(i, 1) = 0
p = 0
MM(i, 1) = 0


For y = 0 To M
EBN(i, y) = EBI(i) * (x - (V * y) / x)
If EBN(i, y) > 0.002 Then
sigmaB(i, y) = 25
ElseIf EBN(i, y) <= 0 Then
sigmaB(i, y) = 0
Else
sigmaB(i, y) = ((EBN(i, y)) / 0.002) * ((2 - (EBN(i, y) / 0.002) ^ 2)) * sigmaresist
End If


nb(i, y) = (nb(i, y)) + (sigmaB(i, y)) * (V) * 1000
MM(i, y) = (MM(i, y)) + (nb(i, y)) * (ho - ((2 * p + 1) * h) / (2 * M))


Next y
'le cas de la partie inferieur


n = 0


For j = 0 To Nr - 1
EASS(j) = (EBI(i) * ((h0 - x - j * 0.1))) / x
var1 = EASS(0)
 If EASS(j) > 0.00175 Then
 sigmas(j) = 348
 Else
 sigmas(j) = E * EASS(j)
 End If
 n = a1 * sigmas(j) * 1000
 Next j
 
 'le cas de la partie sup
 Dim NN As Double
 
 NN = 0
 aprim(0) = aprim1
 aprim(1) = aprim2
 Masup = 0
 Mint = 0
 For w = 0 To Nrprim - 1
 EASprim(w) = EBI(i) * ((x - dprim - w * 0.1)) / x
 If EASprim(w) > 0.00175 Then
 sigmasprim(w) = -348
 ElseIf EASprim(w) < -0.00175 Then
 sigmasprim(w) = E * EASprim(w)
 End If
 
 NN = NN + aprim(w) * sigmasprim(w) * 1000
 Masup = Masup + NN * (h0 - dprim - w * 0.1)
 Next w
 z = n + NN + nb(i, y)


 If z = nest * b * h * sigmaresist Then
'MsgBox ("resultat" & N + NN + nb(i, y))


 salim = False
 x = x + 0.01
 End If
 Wend
 Next i
 




 
 Ro(i) = (EBI(i) + var1) / h0
 Mint = MM(i, y) + Masup
 
MsgBox ("resultat  RO(i)" & Ro(i))




End Sub

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 mai 2009 à 21:30
En fait je vien de trouvé ton erreur,

z = n + NN + nb(i, y)

est appelé en dehors et en desous de la boucle

For y = 0 To M
EBN(i, y) = EBI(i) * (x - (V * y) / x)
If EBN(i, y) > 0.002 Then
sigmaB(i, y) = 25
ElseIf EBN(i, y) <= 0 Then
sigmaB(i, y) = 0
Else
sigmaB(i, y) = ((EBN(i, y)) / 0.002) * ((2 - (EBN(i, y) / 0.002) ^ 2)) * sigmaresist
End If
'<<<= a ce stade la boucle est finie et le y est incrémenté de 1 donc est égal à 10

Or ton tableau nb est déclaré comme suit

Dim nb(0 To 9, 0 To 9) As Long

Voila d'ou vien ton erreur !

@+ Mayzz
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 mai 2009 à 21:24
Salut, ton indice en dehors de la palge viens du fait que tu dépasse les limites de ton tableau "nb"

=> z = n + NN + nb(i, y)

Si tu as un tableau déclaré comme ceci

Dim Tableau() As Integer

Puis que tu le redimentionne comme cela

Redim Tableau (5)

Puis en suite que tu appel celui-ci de la façon suivante :

Dim e As Integer

e = Tableau(6)

cela provoquera une erreur car tu demande une valeur qui dépasse la limite du tableau (5)

Aussi vérifi ton code, un tableau Déclaré (5) aura poura contenir 6 élément de 0 à 5. Tu as du te tromper quelque part.

Met ton code au propre car avec toutes tes boucles on y comprend plus rien, espace tes boucles, met du retrait...
0
samdd2005 Messages postés 9 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 26 mai 2009
25 mai 2009 à 21:36
slt merciede m avoir reponder mazz mais la solution elle est ou ???a+
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 mai 2009 à 21:49
Je ne peux pas étudier ton code, je n'en connais même pas le but ! Pour moi ce ne sont que des variables qui ne veulent rien dire... Donc difficile de te dire comment coder, c'est toi qui à conçu cette application tu dois savoir débogguer ton erreur toi même.

Déja tu fais appel à la valeur de "y" or celui ci ne se trouve pas être le pointeur de ta boucle, donc c'est déja l'erreur principale.

z = n + NN + nb(i, y) ' <==== La ou tu place cette instruction la valeur de y sera toujours 10, car elle est le résulat d'une boucle :

For y = 0 To M

'Sachant que tu déclare:

M = 9

Met de l'orde dans ton code, prend une nouvelle procédure et recommence si tu te perd toi même dans ton propre code tu n'ira pas bien loin.

Aussi, rennome correctement tes variables, y, x, i... pour les bouces _nomDeVariables pour les valeurs, tu t'y retrouvera certainement mieux !

@+  
0
Rejoignez-nous