VBA - Résultats d'un tableau pas cohérent
Bonjour,
Je suis actuellement en train de réaliser une feuille de calcul, et je suis étonné par les résultats donné par VBA.
Le principe de la feuille, est de rentrer les caractéristiques mécanique et géométrique d'une poutre et d'en déterminer les sollicitations, et les déformations.
Dans le document ci-joint, en rentrant la longueur de la poutre en C7, et les charges sur cette poutre en B15:E24, la macro calcul les sollicitations et déformé le long de la poutre.
Sur la partie droite de la feuille Excel, j'ai calculé "à la main" les sollicitation et déformés, pour vérifier la cohérence de la macro VBA.
En mettant un point d'arrêt sur la ligne 71 de la macro, je constate que le valeur de Mf(z, xc) = Mf(0, 0) = 0. Cette valeur représente le "Moment" pour le premier cas de charge, à xc=0.
Je trouve bien ce résultat en calculant via Excel, donc ce résultat est OK.
Or en fin de macro, quand je fait afficher des résultats pour comparer avec les calcul via EXCEL, et mettant un point d'arrêt sur la ligne 121, je constate que Mf(0, 0) = 18.6.
Comme vu plus haut, ce résultat n'est pas correct.
En essayant de comprendre les valeurs données dans la dernière partie de la macro, j'ai constaté que les valeur que me donne la macro pour V(0, 0), Mf(0, 0), C(0), w(0, 0), D(0) et delta(0, 0) ne correspondent pas à la valeur xc=0 mais plutôt xc=0.5, soit V(0, 0.5), ... delta(0, 0.5)
Je n'arrive pas à comprendre pourquoi la valeur qu'il me donne en fin de macro n'est pas la même que celle qu'il calcul en ligne 70.
Si quelqu'un à une idée, je suis preneur, car la, je bloque complet...
Si vous avez besoin de précisions sur le fonctionnement de la macro, ou autre, n'hésitez pas.
Merci d'avance
Bonjour,
Juste une question au passage, car les formules mathématiques me donnent mal à la tête
Pourquoi vouloir faire ça en VBA ?
@+
Oui il y a quelques formules sympa...
Le fichier joint est un fichier très simplifié, mais en réalité, les poutres peuvent avoir un grand nombre d'appuis, donc les calculs sont à répéter beaucoup de fois.
J'ai fait cette feuille sur EXCEL, mais comme il y a beaucoup de calcul et beaucoup de cellules à remplir (environ 180.000), le calcul met 10 à 20 secondes à tourner, c'est pourquoi je veut faire ça en VBA (éviter d'écrire dans des cellules toutes les valeurs, mais seulement les points caractéristiques)
Bonsoir,
ce que je n'arrive pas à expliquer, c'est qu'en diminuant le nombre du pas de calcul (initialement, je découpais la poutre en 1/1000) à 9 (à partir de 10, le résultat est faux), le résultat donné par la macro VBA est bon. Cf feuille jointe.
Peut être que cette analyse permettra à quelqu'un de comprendre d'où vient le problème.
Merci d'avance
Bonjour,
Mf(z, xc) = Ra(z) * xc
à chaque boucle xc varie de 5/1000. L'indice 2 de Mf doit être entier, au 2nd passage ton 0.005 devient donc 0 dans l'indice.
Il faudrait multiplier xc par 1000/5 (=200) pour avoir une plage d'indice de 0 à 200
Au passage, fais un clic-droit dans ton code et choisi 'Ajouter un espion'.
Expression : Mf(0,0)
Type d'espion : Arrêt si la valeur change.
Je sens que ça va te servir...
eric
PS : quand ça tombe en marche (v2) c'est que tu ne rencontres plus le cas
If x0(z) = x1(z) Then
'...
Else
If xc <= x0(z) Thenni les autres où tu as w(z, xc) = ...
ok merci beaucoup, je comprend mieux maintenant.
Et merci aussi pour la technique de l'espion, c'est en effet très utile.