Boucle incrémentation et commande bouton

Bonjour la communauté,

J'ai un problème a vous soumettre.

Je code usuellement sur LISP (AutoCAD) mais je tente de me lancer en VBA sur Excel.

J'ai quelques petites bases mais je ne connais/comprends pas la façon de structurer les programmes (Modules, formulaires...).

Bref, je désire réaliser un programme (équation a 2 inconnues), a partir de cette équation :

Nombrer1*x + Nombre2*y = Résultat, qui me retourne les valeurs de x et y validant l’équation. Seuls x et y sont variables, Nombre1, Nombre2 et Resultat sont défini dans les cellules A5, B5 et D5 avant de lancer le calcul.

Je souhaite que x et y soit des valeurs précises a 2 décimales près.

Vous trouverez ci-dessous le code que j'ai réalisé pour le moment (et ci-joint le fichier).

Le programme a l'air de bien tourner (lorsque je clique sur le boutoncommande CHERCHE VALEUR), mais j'aimerais avoir des conseils/remarques sur la structure de mon code, savoir s'il est compréhensible ou pas, écrit dans le bon module...

De plus, j'aimerai que les différentes possibilités de valeurs de x et de y soit affichées dans un label/textbox?? dans la boite de dialogue et stopper la boucle/programme en cours lorsque l'on clique sur le boutoncommande STOP...

Actuellement j'affiche le premier résultat de x et y, validant le calcul, respectivement dans les cellules A2 et B2 ainsi que dans un msgbox.

J’espère que ce n'est pas trop brouillon et que vous pourrez m'aider.

Merci d'avance.

Private Sub valider_Click()

Range("A1:D5").NumberFormat = "#,##0.00"

Dim resultat As Single
Dim bstop As Boolean
Dim numero As Integer
Dim nombre1 As Double
Dim nombre2 As Double
Dim calcul As Single
Dim x As Double
Dim y As Double
Dim Trouve As Boolean

Trouve = False
resultat = Range("D5").Value
nombre1 = Range("A2").Value
nombre2 = Range("B2").Value
x = 0
y = 0

Do
Do While calcul <> resultat 'bouton stop a ajouter plus tard pour arreter la boucle si trop long

y = y + 5 ' y = 5 car si j'utilise une valeur a virgule (0,05 par exemple) les resultats des calculs ne sont pas toujours exactes (2eme decimale)
calcul = (x / 100 * nombre1) + (y / 100 * nombre2) ' x/100 afin d'incrementer le pas de 0,05 en 0,05

    If (calcul = resultat) Then
    Trouve = True
                'Anticipe la sortie de la boucle.
                Exit Do
    End If
    If y > 500 Then
    y = 5
    x = x + 5
    If (calcul = resultat) Then
       Trouve = True
                'Anticipe la sortie de la boucle.
                Exit Do
    End If
    End If
    Loop

    'Quitte la boucle si la variable à la valeur True.
    Loop Until Trouve = True Or x = 500
    ActiveSheet.Cells(5, 1).Formula = x / 100
    ActiveSheet.Cells(5, 2).Formula = y / 100
    'ActiveSheet.Cells(5, 3).Formula = calcul
    MsgBox ("Solution trouvee : " & " X = " & x / 100 & " ET Y = " & y / 100 & Chr(10) & Chr(10) & "La formule est donc : " & Chr(10) & x / 100 & "x" & nombre1 & " (Valeur 1) " & "+ " & y / 100 & "x" & nombre2 & " (Valeur 2)")

End Sub
10test-macro.xlsm (15.79 Ko)

bonjour,

une proposition

11test-macro-3.xlsm (21.02 Ko)

Sublime ! C'est exactement ça, merci.

D’après toi, est-il possible d'ajouter une 3eme inconnues (z) dans la boucle ?

Le calcul donnerai alors : Nombrer1*x + Nombre2*y + Nombre3*z = Résultat

Merci d'avance et beau boulot

Bonjour,

D’après toi, est-il possible d'ajouter une 3eme inconnues (z) dans la boucle ?

il suffit d'ajouter une boucle supplémentaire et d'adapter ton équation.

9test-macro-3.xlsm (21.96 Ko)
Rechercher des sujets similaires à "boucle incrementation commande bouton"