Calculs mathématiques depuis Userform

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Bonjour à tous,

@pierrejean : impeccable tout çà. c'était "juste" les zéros qui manquait pour l'addition?
@gruick : je vais essayer ta proposition, sachant que j'ai encore quelques formules à ajouter à la partie calcul de décroissance, dont le calcul de T selon les formules en bas à droite de mon Userform.

Le grand T : c'est la période radioactive. Elle est propre à chaque radioélément. C'est le temps qui s'écoule pour que l'activité diminue de moitié. ex : Technecium99m utilisé en milieu médical 6 heures, Uranium238 4.5 milliards d'années.:mad:
-> dans différents calcul la période est exprimée en secondes d'où ce besoin.

Merci à tous, @ bientôt
 
Dernière édition:

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Re,

pour palier à toutes les éventualités de calcul possible dans la partie décroissance avec mes 6 textbox, la solution de Roger (post#34) me parait adaptée mais j'ai un peu de mal à comprendre :
p = p + 2 ^ (i - 1)
i c'est ok on le fait varier de 1 à 6 dans mon cas mais p?? on le remplace par quoi?

Merci de m'éclaircir.
 

ROGER2327

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Bonsoir hypo78


Re,

pour palier à toutes les éventualités de calcul possible dans la partie décroissance avec mes 6 textbox, la solution de Roger (post#34) me parait adaptée mais j'ai un peu de mal à comprendre :


i c'est ok on le fait varier de 1 à 6 dans mon cas mais p?? on le remplace par quoi?

Merci de m'éclaircir.
Avec i variant de 1 à 6, vous obtenez 64 valeurs possibles de
0 (binaire 00000) indiquant six boîtes vides à 63 (binaire 111111) indiquant six boîtes non-vides.
Si on obtient p=37 (binaire 100101), cela signifie que les boîtes 2, 4, 5 sont vides et les boîtes 1, 3, 6 ne sont pas vides.
Si ce cas vous intéresse, vous le traiterez dans la partie du code
Code:
Select Case p
Case 37: [I]ici le code correspondant à la situation "Boîtes 2, 4, 5 vides"[/I]
...
End Select
Est-ce plus clair ? (Ou, peut-être, n'ai-je pas compris la demande ?)​

Bon courage !


ROGER2327
#5389


Vendredi 20 Décervelage 139 (Saint Outlaw, aristocrate - fête Suprême Quarte)
27 Nivôse An CCXX, 9,4367h - plomb
2012-W03-2T22:38:53Z
 

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Bonjour Roger.
La partie que je ne comprends pas c'est comment on obtient P=37 avec (100101).
Merci de m'accorder encore un peu de temps pour me l'expliquer.
Cordialement
 

pierrejean

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Re

Les 0 dans les TextBox sont necessaires pour eviter de faire tousser EXCEL sur Cdbl(TextBox2) avec TextBox2=""

En l'absence de ROGER vois ce petit fichier qui tente d'expliquer comment on passe du binaire au decimal
 

Fichiers joints

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Bonjour Pierrejean,

là tout devient limpide.
je ne sais plus comment dire merci. je vais écrire tout çà et je reviens.

@ plus tard
 

ROGER2327

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Bonjour hypo78, pierrejean


J'ai oublié de commencer par le commencement ! Merci à pierrejean d'avoir apporté ce qui manquait.​


Bonne journée.


ROGER2327
#5390


Samedi 21 Décervelage 139 (Chaire du Dr Faustroll - fête Suprême Première seconde)
28 Nivôse An CCXX, 4,4094h - zinc
2012-W03-3T10:34:57Z
 

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

me revoilà déja :eek:

j'ai commencé à écrire mes différentes formules et celle-ci ne renvoie rien

Code:
 'calcul de A1
    Case 33: Me.TextBox2.Value = CDbl(Me.TextBox1.Value) / (2) ^ CDbl(Me.TextBox6.Value)
je cherche à appliquer la formule A1=A0 / 2^n

merci d'avance pour vos lumières
 

pierrejean

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Re

Modification minimum a effectuer:

Code:
Sub calc()
Dim p As Byte, i As Byte
    For i = 1 To 6
        With Me.Controls("TextBox" & (i))
            .Text = Replace(.Text, ".", ",")
            .ForeColor = 0
            If .Text <> "" Then
               p = p + 2 ^ (i - 1)
            Else
               .Text = 0
            End If
        End With
    Next
    On Error GoTo E
    Application.EnableEvents = False
    Select Case p
    Case 33: Me.TextBox2.Value = CDbl(Me.TextBox1.Value) / (2) ^ CDbl(Me.TextBox6.Value)
    Case 25, 29: Me.TextBox2.Value = CDbl(Me.TextBox1.Value) / Exp(CDbl(Me.TextBox4.Value) * CDbl(Me.TextBox5.Value))
    Case 26, 30: Me.TextBox1.Value = CDbl(Me.TextBox2.Value) * Exp(CDbl(Me.TextBox4.Value) * CDbl(Me.TextBox5.Value))
    Case 19, 23: Me.TextBox4.Value = Log(CDbl(Me.TextBox1.Value) / CDbl(Me.TextBox2.Value)) / CDbl(Me.TextBox5.Value)
    Case 11, 15: Me.TextBox5.Value = Log(CDbl(Me.TextBox1.Value) / CDbl(Me.TextBox2.Value)) / CDbl(Me.TextBox4.Value)
    Case Else: For i = 1 To 5: Me.Controls("TextBox" & (i)).ForeColor = 255: Next
    End Select
    Application.EnableEvents = True
Exit Sub
E:
    MsgBox "Une erreur imprévue est survenue..."
End Sub
Explication:
Pour avoir 33 il faut que l'on teste les 6 premieres TextBox d'ou
For i = 1 To 6 au lieu de For i = 1 To 5
ensuite:
Pour avoir des Cdbl(TextBox..) valides il faut ne pas avoir de "" d'ou
If .Text <> "" Then
p = p + 2 ^ (i - 1)
Else
.Text = 0
End If

au lieu de
If .Text <> "" Then p = p + 2 ^ (i - 1)

Enfin, pour tester, commencer par inscrire un nombre pour TextBox6 soit n puisqu'il n'y a pas de sub demandant le calcul sur TextBox6 : Je n'ai pas voulu modifier , ne sachant pas comment est determiné n
 

pierrejean

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Re

Par mesure de securité je te propose :

Code:
Private Sub ComboBox1_Change()
Label22 = ""
Label23 = ""
Label39 = ""
End Sub
Private Sub TextBox13_Change()
Label22 = ""
Label23 = ""
Label39 = ""
End Sub
Private Sub TextBox14_Change()
Label22 = ""
Label23 = ""
Label39 = ""
End Sub
Apres modification de valeurs ^10 ou préfixe > obligation de cliquer sur afficher la valeur d'ou : soit pas de valeur soit valeur reellement correspondante
 

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Re,
Je regarde tout ça demain matin ou demain soir. (j'ai toute la nuit pour ça)
Merci pour tous ces conseils.

Cordialement
 

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Bonjour à tous,

le projet touche à sa fin.:)
Si vous voulez jetez un oeil à l'ensemble du code pour me conseiller sur la gestion d'erreur, ergonomie ou autre n'hésitez pas.
Merci à tous ceux qui ont contribué à l'élaboration de cet outil.;)
 

Fichiers joints

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Re,

encore une petite question, dans la textbox33 lorsque je saisi un nombre j'aimerai qu'à la validation celui ci s'écrive sous la forme
000 000 000 comme le label19 juste au dessus.


Dans la partie décroissance, si je saisis A0, A1 et T, il me calcule lambda mais pas t et n alors que les données sont présentes.

Edit : je crois que j'ai des formules de base qui sont fausses donc pas la peine de trop décortiquer, mais j'ai quand même une question avant de reprendre cette partie, est ce que l'on peut trouver un même case sur différents calculs? ou alors faut-il sous un même case lui proposer de faire plusieurs calculs??

Merci de votre aide.
 

Fichiers joints

Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Re

J'ai revu ton code pour avoir les années mois .... en secondes qui n'affichait qu'a partir d'1 année
Pour la seconde question je verrai cet a-m
 

Fichiers joints

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Bonjour PierreJean,

merci pour cette modif et l'astuce du module2 pour le numberformat.

Je vais essayer d'épurer la partie de mon code avec les formules pour les Textbox de 1 à 8, pour voir où çà coince.

Cordialement.
 

hypo78

XLDnaute Impliqué
Re : Calculs mathématiques depuis Userform

Re,

exemple concret :
je saisis :
A0 =500
A1 = 125
-> n se calcule
je continue ma saisie :
T = 60
Lambda se calcule

Dans ce cas t devrait se calculer, mais pour que ce soit le cas il faut resaisir une des données.

Peut être une solution avec une boucle?

En pièce jointe seulement la partie qui concerne la question.
 

Fichiers joints

Gruick

XLDnaute Accro
Re : Calculs mathématiques depuis Userform

Bonjour,

le t qui est rétif, c'est parce que une fois qu'un "case" est repéré, et calculé, VBA va à EndSelect. Il faut donc redonner une autre valeur à p après ton calcul du lambda, (j'ai pris 19, ça marche) et lui faire refaire le calcul en retournant sur SelectCase p grâce à un GoTo suivi d'une étiquette préalablement définie.

Gruick
Code:
P:    Select Case P
    'calcul de n
    Case 12, 31: Me.TextBox6.Value = Format(CDbl(Me.TextBox4.Value) / CDbl(Me.TextBox3.Value), "0.00")
    Case 3: Me.TextBox6.Value = Format(Log(CDbl(Me.TextBox1.Value) / CDbl(Me.TextBox2.Value)) / Log(2), "0.00")
    'calcul de lambda
    Case 4, 5, 7, 39: Me.TextBox5.Value = Format(Log(2) / CDbl(Me.TextBox3.Value), "0.00E+00")
    P = 19: GoTo P
    'calcul de A1
    Case 33: Me.TextBox2.Value = Format(CDbl(Me.TextBox1.Value) / (2) ^ CDbl(Me.TextBox6.Value), "0.00E+00")
    Case 25, 61: Me.TextBox2.Value = Format(CDbl(Me.TextBox1.Value) * Exp(-(CDbl(Me.TextBox5.Value) * CDbl(Me.TextBox4.Value))), "0.00E+00")
    'calcul de t
    Case 19, 23, 55: Me.TextBox4.Value = Format(Log(CDbl(Me.TextBox1.Value) / CDbl(Me.TextBox2.Value)) / CDbl(Me.TextBox5.Value), "0.00E+00")
    'calcul de A0
    Case 26, 30: Me.TextBox1.Value = CDbl(Me.TextBox2.Value) / Exp(-(CDbl(Me.TextBox5.Value) * CDbl(Me.TextBox4.Value)))
    Case 14, 46, 62, 34: Me.TextBox1.Value = CDbl(Me.TextBox2.Value) * (2) ^ (Me.TextBox6.Value)
    'calcul de A depuis la masse
    Case 212: Me.TextBox1.Value = CDbl(Me.TextBox5.Value) * (6.023 * 10 ^ 23) * (CDbl(Me.TextBox7.Value) / CDbl(Me.TextBox8.Value))
    
    Case Else: For i = 1 To 8: Me.Controls("TextBox" & (i)).ForeColor = 255: Next
    End Select
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Calculs mathématiques depuis Userform

Re


Pour ma part , je vois les choses plus simplement :
le case supporte bien 2 (ou plus) calculs successifs
Si le resultat du 1er calcul en permet un autre , ce dernier peut etre mis dans le même case
Voir ton exemple : A0 puis A1 puis T dans le fichier joint
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas