Texte box & Excel

Thomeux Messages postés 58 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 14 janvier 2010 - 26 avril 2006 à 11:45
Thomeux Messages postés 58 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 14 janvier 2010 - 26 avril 2006 à 15:57
Bonjour,
J'effectue un programme sous Excel afin d'effectué un calcul de cote.
Dans ce programme, j'ai desoin que le prigramme me propose une valeur, et qu'en fonction de cette valeur, je lui passe une valeur que je ne peux pas définir avant de lancer le programme.
 J'ai donc créé une userform dans laquelle se trouve deux textbox, une pour afficher la valeur du programme, et l'autre pour saisir la valeur à passer au programme. Lorsque je demande à mon programme de me montrer la userform et de mettre la valeur calculée dans la textbox1, il affiche bien la userform, mais la textbox reste vide, et quelquesoit la valeur rentrée dans la textbox2, rien ne se passe.
Pouvez vous m'aidez s'il vous plaît.
Merci d'avance
Thomas

PS: je vous joint mon code

Dans module1:
'***********************************
'Définition nouveau type de Varaible
'Créer par MERRE Thomas le 27/03/06
'Nom du type: Mon Type
'Variable: Min, Max, Xmax, Xmin
'***********************************


Private Type MonType
   Cp As Double
   dpf As Double
End Type
'***********************************
'*Fin de définition du nouveau type*
'***********************************

Sub vis_sans_fin()
    UserForm1.Hide
    Dim c As MonType
    c = Module2.CADOR(Range("B65"), Range("B66"), Range("B67"), Range("B68"), 0.5)
   Range("C70") = c.Cp
   Range("C71") = c.dpf
End Sub

Dans module2:
'***********************************
'Définition nouveau type de Varaible
'Créer par MERRE Thomas le 27/03/06
'Nom du type: Mon Type
'Variable: Min, Max, Xmax, Xmin
'***********************************


Private Type MonType
   Cp As Double
   dpf As Double
End Type
'***********************************
'*Fin de définition du nouveau type*
'***********************************


'**************************************
'*********Algorythme de CADOR**********
'**************************************
Function CADOR(z1 As Single, q As Double, mx As Double, alphazn As Double, Csx As Double) As MonType


'**********************
'***Données d'entrée***
'**********************


'z1          'Nombre de filet vis
'q           'Quotient diamétral
'mx          'module axial
'alphazn     'angle de pression reel de l'outil
'Csx         'coefficient de répartition de d'épaisseur


'**********************
'***Données Calculées**
'**********************
Dim pz2 As Double
Dim gamma1 As Double
Dim r1 As Double
Dim h1 As Double
Dim rf1 As Double
Dim ra1 As Double
Dim Sx As Double
Dim a1 As Double
Dim a2 As Double
Dim a3 As Double
Dim A As Double
Dim B As Double
Dim c As Double
Dim D As Double
Dim u As Double
Dim a4 As Double
Dim xx As Double
Dim yx As Double
Dim beta As Double
Dim tgalphax As Double
Dim F As Double
Dim Fp As Double
Dim deltabeta As Double
Dim alphart As Double
Dim rb As Double
Dim gammab As Double
Dim alpharc As Double
Dim rp As Double
Dim pf As Double
Dim dp As Double
Dim F2 As Double
Dim dpf As Double
Dim deltarb As Double
Dim deltay As Double


F2 = 1
MsgBox "F2 = " & F2
pz2 = mx * z1 / 2
gamma1 = Atn(z1 / q)
r1 = mx / 2 * q
h1 = 2.2 * mx * Cos(gamma1)
rf1 = r1 - h1 + mx
ra1 = r1 + mx
Sx = 4 * Atn(1) * mx * Csx




a1 = pz2
A = r1 - (Sx / 2) * (Cos(gamma1) / Tan(alphazn))
a2 = (A * Sin(gamma1) * Tan(alphazn)) / (Sqr(1 + (Sin(gamma1) * Tan(alphazn)) * (Sin(gamma1) * Tan(alphazn))))
a3 = a2 / (A * Tan(gamma1))
If a2 > 0 Then
    u = (r1 * r1 - a2 * a2) ^ 0.5
    a4 = -(a1 * Atn(u / a3) + a3 * u) + 4 * Atn(1) * mx * (1 - Csx)
Else
    MsgBox "Le calcul est impossible, vérifiez vos paramètre d'entrée", vbExclamation
    GoTo SORTIR
End If


yx = r1
beta = 0




Do
u = Sqr(yx ^ 2 - a2 ^ 2)
xx = a1 * Atn(u / a2) + a3 * u + a4
tgalphax = (a1 * a2 / yx + a3 * yx) / u
A = yx * (yx + xx * tgalphax)
B = -pz2 * yx * tgalphax
c = pz2 ^ 2
D = -pz2 * xx


Do
    F = A * Tan(beta) + B * Tan(beta) * beta + c * beta + D
    Fp = (A + beta * B) * Tan(beta) ^ 2 + B * (Tan(beta + B)) + A + c
    deltabeta = F / Fp
    beta = beta - deltabeta
Loop While (Abs(deltabeta / beta) > 0.0000001)


alphart = -Atn(B / c)
rb = yx * Cos(alphart)
gammab = Atn(pz2 / rb)
alpharc = beta + alphart




rp = rb * (Tan(alpharc) - Tan(alphart)) / Sin(gammab)
pf = rb / Cos(alpharc)
If F2 = 1 Then
    dp = 2 * rp
    F2 = 0
End If
   
If dpf = 0 Then
    UserForm1.Show
    TextBox1.Text = dp
    dpf = TextBox2.Value
    UserForm1.Hide
End If
    deltarb = (dp - dpf) / 2
    deltay = deltarb / (Sin(gammab) * Sin(alpharc))
   
Loop While (Abs(deltay / y) > 0.000001)
SORTIR:
MonType.dp = dpf
MonType.Cp = 2 * (F + rpf)
End Function

2 réponses

asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
26 avril 2006 à 14:06
Bonjour,

Au niveau logique, ce serait bien de dire que le paramètre est dans le premier TextBox et le résultat dans le second.
Sans entrer dans le détail de la fonction (j'ai mal à la tête rien qu'à le lire), quand tu procède en pas à pas, as-tu un résultat ? (quitte à mettre un msgbox pour vérifier que tu as bien un résultat).

Cordialement;

Alain 31
0
Thomeux Messages postés 58 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 14 janvier 2010
26 avril 2006 à 15:57
J'ai bien une valeur pour "dp", mais rien ne s'affiche dans la textbox1( textbox qui doit recevoir la valeur calculée par la programme), j'ai même essayé de faire afficher du texte dans la textbox, mais il ne veut rien  affiché.

    TextBox1.Text = dp
    dpf = TextBox2.Value
0
Rejoignez-nous