[Déplacé VB6 --> VBA] Progamme double boucle sur VBA
Matrach
Messages postés3Date d'inscriptionvendredi 7 mai 2010StatutMembreDernière intervention 8 mai 2010
-
7 mai 2010 à 13:33
Matrach
Messages postés3Date d'inscriptionvendredi 7 mai 2010StatutMembreDerniè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
A voir également:
[Déplacé VB6 --> VBA] Progamme double boucle sur VBA
Matrach
Messages postés3Date d'inscriptionvendredi 7 mai 2010StatutMembreDerniè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!
Florian62150
Messages postés32Date d'inscriptionmardi 27 avril 2010StatutMembreDerniè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
Matrach
Messages postés3Date d'inscriptionvendredi 7 mai 2010StatutMembreDerniè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. :(.