[Déplacé VB6 --> VBA] Progamme double boucle sur VBA

Matrach Messages postés 3 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 8 mai 2010 - 7 mai 2010 à 13:33
Matrach Messages postés 3 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 8 mai 2010 - 8 mai 2010 à 14:35
Bonjour à tous,

Je souhaiterais faire un programme avec VBA comprenant des boucles qui me permettrait de déterminer trois nombres x, y et z tels que :
z=2,45*y
x=0,75*(x+y)
x+y+z=515

Sachant que x varie de 0 à 515 et que y varie de 0 à 150.

J'ai tenté de faire un programme mais celui-ci ne fonctionne pas.

Sub runsheet()
Dim x As Double
Dim y As Double
Dim z As Double
Dim u As Double
z = 2.45 * y
u = 515
u = x + y + z
For x = 0 To 515 Step 1
For y = 0 To 150 Step 1
x = 0.75 * (x + y)
Next x
Next y

Cells(1, 1) = x
Cells(2, 1) = y
Cells(3, 1) = z
Cells(4, 1) = u

End Sub


Serait-il possible svp que quelqu'un me donne quelques indications?

Merci d'avance!

Matrach

4 réponses

Florian62150 Messages postés 32 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 mai 2010
7 mai 2010 à 15:16
Slt

Tu ne testes jamais si ta somme (x+y+z) est vérifiée...

Et en plus une de tes condition pourrait etre simplifée...
x 0.75(x+y) moi je dirai donc x 3y nan?

Pour écrire dans une celulle c'est quasiment ça ^^
Cells(Row,Column).Formula ou Cells(Row,Column).Value

Avec ça je pense que tu devrais pouvoir le réaliser ton programme

Et au fait, la réponse c'est:
x=239.53
y=79.84
z=195.62

a+
0
Matrach Messages postés 3 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 8 mai 2010
7 mai 2010 à 18:05
Salut et merci pour tes remarques.

Pour ce qui est de la simplification, tu as absolument raison. C'est juste que je vais faire varier manuellement ce pourcentage et que je n'aurai pas tout le temps des nombres entiers.

Pour ce qui est de tester la somme je rame toujours. J'ai essayer d'y incorporer une condition if then end if mais sans succès :

Sub runsheet()
Dim x As Double
Dim y As Double
Dim z As Double
Dim u As Double
x = 0
y = 0
z = 0
z = 2.45 * y
u = x + y + z
For x = 0 To 515 Step 1
For y = 0 To 150 Step 1
x = 0.75 * (x + y)

If u = 515 Then
Exit Sub
End If
Next y
If u = 515 Then
Exit Sub
End If
Next x
If u = 515 Then
Exit Sub
End If


Cells(1, 1).Value = x
Cells(2, 1).Value = y
Cells(3, 1).Value = z
Cells(4, 1).Value = u

End Sub

Je crois que je n'ai pas bien compris le fonctionnement de vba sur ce point.

Si tu (ou une autre personne) pouvais encore m'aider sur ce point ça serait très sympa!
0
Florian62150 Messages postés 32 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 mai 2010
8 mai 2010 à 13:01
Tu n'as toujours pas simplifié ton calcul =)
Et il faut tester ta somme dans ta boucle, sinon ça n'as pas d'intérêt

Sub runsheet()
Dim x As Double, y As Double, z As Double, u As Double

For x = 0 To 515 Step 0.1
    For y = 0 To 150 Step 0.1
        x = 3 * y
        z = 2.45 * y
        u = x + y + z
        If u = 515 Then
            Cells(1,1).Value = x
            Cells(1,2).Value = y
            Cells(1,3).Value = z
            Cells(1,4).Value = u
            Exit
        End If
    Next y
Next x
End Sub


Je pense que ce bout de code la est bon... j'ai pas testé mais regarde
0
Matrach Messages postés 3 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 8 mai 2010
8 mai 2010 à 14:35
C'est très gentil de ta part.
Je suis sûr qu'on est près du but mais il y a toujours un truc qui ne va pas je crois.

Je pensais que c'était le Exit qui devait être remplacé par un Exit Sub mais ce n'est pas ça.
Ahlala je ne suis vraiment pas doué, je commence à désespérer. :(.

Merci pour tout en tout cas. :)
0
Rejoignez-nous