Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
SVP est ce que vous avez une idée sur comment résoudre l'équation ax+b=0 où a et b sont des coeff réels , un programme qui doit m'afficher la solution x de l'équation
je te propose cette version améliorée de ton fichier. 🙂
ça n'utilise plus les cellules W1, W2, et W3 ; après avoir cliqué sur le bouton Équation, tout se passe sur le UserForm ; quand tu vas valider le bouton Résoudre(par un clic dessus, ou en appuyant sur la touche Espace), ça va afficher le résultat(s'il y en a un), puis aller automatiquement sur le bouton Effacer ; tu peux alors appuyer sur la touche Espace pour valider ➯ ça efface les données et le résultat, puis ça va...
dans ton post #3, tu as écrit : « c'était demandé à l'école pourtant »🙄
alors dans ce cas, voici un fichier .xlsm avec solution VBA.
fais Ctrl e ; tu dois d'abord saisir a, puis b ; attention : tu ne peux pas sortir d'une boîte de dialogue tant que tu n'as pas saisi une donnée ; cette donnée peut être un nombre réel entier, ou un nombre fractionnaire ; dans ce 2ème cas, pour le séparateur décimal, tu peux saisir au choix une virgule ou un point.
exemple 1 : saisis 8 puis 32 ➯ message : « Solution de ax + b : -4 »
vérif : ax + b = (8 × -4) + 32 = -32 + 32 = 0
exemple 2 : saisis -40.32 puis 38,75 ➯ message : « Solution de ax + b : 0,961061507936508 »
vérif : ax + b = (-40,32 × 0,961061507936508) + 38,75 = -38,75 + 38,75 = 0
je te laisse faire d'autres tests, avec d'autres valeurs. 🙂
Dim a# : idem que Dim a As Double
les calculs sont faits en interne avec la précision maximale (15 chiffres après la virgule), et lors du stockage dans les variables a et b, c'est selon la précision de ces variables du type Double, donc en double précision(par opposition au type Single qui est pour les variables en simple précision).
tu noteras que dans le code VBA, je ne mets pas directement les valeurs saisies dans a et b mais dans 2 chaînes de caractères s1 et s2 ; pourquoi ? car ça évitera de planter si l'utilisateur saisit une valeur incorrecte comme une lettre, ou un mot, ou une autre valeur non numérique.
bien sûr, si a = 0, il faut sortir de la sub pour éviter une erreur de division par zéro !
car : -b / a = -b / 0 = plantage !division par zéro : mathématiquement impossible !
tu peux aussi mettre :
If a = 0 Then MsgBox "a = 0 => Il n'y a pas de solution !": Exit Sub
code VBA :
VB:
Option Explicit
Sub Essai()
Dim s1$, s2$, a#, b#
Do
s1 = InputBox("a : ")
Loop Until s1 <> ""
Do
s2 = InputBox("b : ")
Loop Until s2 <> ""
a = Val(Replace$(s1, ",", ".")): If a = 0 Then Exit Sub
b = Val(Replace$(s2, ",", "."))
MsgBox "Solution de ax + b : " & -b / a
End Sub
voici une version améliorée du fichier de mon post #5.
fais Ctrl e, ou clique sur le bouton « Équation » ; pour la saisie des nombres : mettre un signe moins « - » devant si le nombre est négatif ; séparateur décimal : point « . » ou virgule « , » (au choix)
VB:
Option Explicit
Sub Équation()
Dim msg$, s1$, s2$, a#, b#
Do: s1 = InputBox("Saisir la valeur de a :"): Loop Until s1 <> ""
Do: s2 = InputBox("Saisir la valeur de b :"): Loop Until s2 <> ""
a = Val(Replace$(s1, ",", "."))
If a = 0 Then MsgBox "a = 0 => Pas de solution !": Exit Sub
Const lf2 As String * 2 = vbLf & vbLf
b = Val(Replace$(s2, ",", "."))
msg = "a = " & a & lf2 & "b = " & b & lf2 _
& "Solution de ax + b = 0 :" & lf2 & "x = -b / a = " & -b / a
MsgBox msg, 0, "Infos"
End Sub
je te propose cette version améliorée de ton fichier. 🙂
ça n'utilise plus les cellules W1, W2, et W3 ; après avoir cliqué sur le bouton Équation, tout se passe sur le UserForm ; quand tu vas valider le bouton Résoudre(par un clic dessus, ou en appuyant sur la touche Espace), ça va afficher le résultat(s'il y en a un), puis aller automatiquement sur le bouton Effacer ; tu peux alors appuyer sur la touche Espace pour valider ➯ ça efface les données et le résultat, puis ça va automatiquement sur la 1ère TextBox : prêt pour la saisie d'une nouvelle valeur de a.
pour la saisie des nombres : mettre un signe moins « - » devant si le nombre est négatif ; séparateur décimal : point « . » ou virgule « , » (au choix)
attention : note bien que le résultat n'est plus affiché dans une TextBox mais dans un Label !
VB:
Option Explicit
Private Sub cmdRsd_Click()
Dim a#, b#, s$
If txtA = "" Then MsgBox "Vous devez donner a !": txtA.SetFocus: Exit Sub
a = Val(Replace$(txtA, ",", ".")): If a = 0 Then MsgBox "a = 0 => Pas de solution !": Exit Sub
If txtB = "" Then MsgBox "Vous devez donner b !": txtB.SetFocus: Exit Sub
b = Val(Replace$(txtB, ",", ".")): s = Replace(LTrim$(Str$(-b / a)), ".", ",")
If Left$(s, 2) = "-," Then s = "-0," & Right$(s, Len(s) - 2)
If Left$(s, 1) = "," Then s = "0" & s
txtX.Caption = s: cmdClr.SetFocus
End Sub
Private Sub cmdClr_Click()
txtX.Caption = "": txtB = "": txtA = "": txtA.SetFocus
End Sub
Private Sub txtA_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 27 Then Unload Me
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD