Jai besoin d un idee [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 12 mai 2009
Statut
Membre
Dernière intervention
26 mai 2009
-
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
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

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
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
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
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...
Messages postés
9
Date d'inscription
mardi 12 mai 2009
Statut
Membre
Dernière intervention
26 mai 2009

slt merciede m avoir reponder mazz mais la solution elle est ou ???a+
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
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 !

@+