Erreur exécution 5

Signaler
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007
-
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007
-
Bonjour,
Lorsque j'éxecute mon programme, j'ai une erreur '5 toujours au même endroit (ligne en couleur).
Pour info mon nbr vaut 12 et mon Iy est définit de 1 à 20.
Donc si jamais quelqu'un est déjà tombé sur ce genre d'erreur...

Public Sub adjust(Ix As Single, I0y As Single, Iz As Single, L As Single, Jx() As Single, Jy() As Single, Jz() As Single, Iy() As Single, nbr As Integer, Le0 As Single, vt As Single, le As Single, Rgalet As Single, PCD As Single, a1 As Single, a2 As Single, angl() As Single, cou() As Single, ang() As Single, course() As Single)
Dim i As Integer
Dim l0(1 To 20) As Single
Dim garde1 As Single, garde2 As Single
Dim mx As Single, mn As Single, md As Single
Dim ax As Single, an As Single
Dim teta As Single


mx = -1000
mn = 1000
md = 5


centrage:


For i = 1 To nbg
    course(i) = Iy(i) - I0y
    teta = Arcsin((I0z - Jz(i)) / L)
    ang(i) = teta * deg
Next i


For i = 1 To 12
    Select Case Iy(i)
        Case Is > mx
            mx = Iy(i)
            ax = ang(i)
        Case Is < mn
            mn = Iy(i)
            an = ang(i)
        Case Abs(Iy(i)) < md
            md = Iy(i)
    End Select
Next i
mx = mx + (Rgalet / 2 * Cos(a1 / deg)) + (PCD / 2 * Cos((90 - a1) / deg))
mn = mn - (Rgalet / 2 * Cos(a2 / deg)) - (PCD / 2 * Cos((90 - a2) / deg))


For i = 1 To nbr
    Select Case ax
        Case ax < angl(i) And ax > angl(i + 1)
            Call resolv(cou(i), cou(i + 1), angl(i), angl(i + 1), garde1, ax)
        Case ax > angl(i) And ax < angl(i + 1)
            Call resolv(cou(i), cou(i + 1), angl(i), angl(i + 1), garde1, ax)
    End Select
    Select Case an
        Case an < angl(i) And an > angl(i + 1)
            Call resolv(cou(i), cou(i + 1), angl(i), angl(i + 1), garde2, an)
        Case an > angl(i) And an < angl(i + 1)
            Call resolv(cou(i), cou(i + 1), angl(i), angl(i + 1), garde2, an)
    End Select
Next i
       
result1 = ((Le0 - garde1) - mn)
result2 = (mx - (Le0 - garde2))


Select Case result1
    Case Is > (result2 + 0.5)
        le = le - 1
        I0y = -(vt + le)
        For i = 1 To nbr
            l0(i) = Sqr(((Jx(i) - Ix) ^ 2) + ((Jy(i) - I0y) ^ 2) + ((Jz(i) - Iz) ^ 2))
        Next i
        i = 1
        L = 0
        Do While Not l0(i) = 0
            L = L + l0(i)
            i = i + 1
        Loop
        L = L / nbr
        For i = 1 To nbr
            Iy(i) = (Jy(i) + (Sqr((L ^ 2) - ((Jx(i) - Ix) ^ 2) - ((Jz(i) - Iz) ^ 2))))
        Next i
       
        GoTo centrage
       
    Case Is < (result2 - 0.5)
        le = le + 2
        I0y = -(vt + le)
        For i = 1 To nbr
            l0(i) = Sqr(((Jx(i) - Ix) ^ 2) + ((Jy(i) - I0y) ^ 2) + ((Jz(i) - Iz) ^ 2))
        Next i
        i = 1
        L = 0
        Do While Not l0(i) = 0
            L = L + l0(i)
            i = i + 1
        Loop
        L = L / nbr
        For i = 1 To nbr
            Iy(i) = (Jy(i) + (Sqr((L ^ 2) - ((Jx(i) - Ix) ^ 2) - ((Jz(i) - Iz) ^ 2))))
        Next i
       
        GoTo centrage
       
End Select
End Sub

6 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Quel est l'intitulé de cette erreur?
De plus il nous faut la valeur de TOUTE les variables (tableaux inclus) si tu veux une aide rapide

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

intitulé : argument ou appel de procédure incorrect

Tous les tableaux sont définis de 1 à 20.
Les valeurs des autres variables changent régulièrement donc je vois pas trop comment les donner.
Par contre j'ai oublié de préciser que je n'ai l'erreur que lorsque i = nbr (donc 12)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Normalement VB devrait te surligner en plus de la ligne,; l'endroit ou ca cloche

étant donné qu'il n'y a que SQR comme fonction sur cette ligne, a mon avis c'est la valeur de (L ^ 2) - ((Jx(i) - Ix) ^ 2) - ((Jz(i) - Iz) ^ 2) a ce moment la qui coince. Quelle est cette valeur

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

A l'arrondi près, on a:
L = 90.4
Jx = -59.9
Ix = -56.97
Jz = 46.30
Iz = 136.95

Ce qui nous donne un total de -53.8474.


Merci pour l'aide (parce que je suppose que VB ne doit pas connaître les nombres imaginaires).
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Effectivement SQR ne prends pas les nombre négatifs.
je suppose que faire la racine carrée de la valeur absolue ne convient pas alors.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

Ya plus qu'à lui apprendre les racines de nombres négatifs...