Problème utilisation boucle do until VB

Résolu/Fermé
NiKo - 23 mars 2010 à 15:39
 NiKo - 23 mars 2010 à 16:27
Bonjour à tous,

Voila je travaille actuellement sur de la programmation en Visual Basic, et j'ai un problème concernant l'utilisation d'une boucle do until. Voici mon bout de programme:

"Sub comparicion_capacidades()

Dim a As Integer //a=capacité (ligne de production) utilisée
Dim b As Integer // b= capacité limite de la ligne de prod
Sheets("feuil2").Select

Dim posmax As Integer
posmax = 0

For y = 4 To 7

a = Feuil2.Cells(22, y).Select
b = Feuil2.Cells(21, y).Select

a = Int(Feuil2.Cells(22, y))
b = Int(Feuil2.Cells(21, y))

If a > b Then

Do Until a < b

For i = 13 To 20

If posmax = 0 Then
posmax = i

Else

If Feuil2.Cells(i, y).Value > Feuil2.Cells(posmax, y).Value Then

posmax = i
End If

End If

Next i

MsgBox ("ATENCION: La capacidad limita de producion esta alcanzada en la linea 1 para el dia numero " & (y - 3))
MsgBox ("El producto mas producido esta el producto " & Feuil2.Cells(posmax, 1).Value)

Feuil2.Cells(posmax, y).Value = (Feuil2.Cells(posmax, y).Value) - 50
Feuil2.Cells(posmax, y - 1).Value = (Feuil2.Cells(posmax, y - 1).Value) + 50

Call capacidad_utilizada

Loop

End If

Next y"


En gros la macro marche à une exeption près, c'est que à mon avis sa ne reconnait pas lorsque a<b (boucle until), car lorsque les calculs sont effectué (lignes avec + et -50) et le nouveau a calculé (avec le call capacidad_utilizada) pour la première, et ben je part en boucle infinie (même si la nouvelle valeure de a est inférieure à b)!!

voila mon problème, si quelqu'un pouvait m'aider je lui serais très reconnaissant, car je galère là-dessus depuis pas mal de temps et je ne vois pas où est le problème!!

Merci beaucoup! :)

Niko
A voir également:

2 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
Modifié par tompols le 23/03/2010 à 16:15
Salut,

Tes valeur pour a et b sont initialisées avant ta boucle do...loop mais ces valeurs ne sont pas modifiées dans la boucle. La condition de départ (a<b) est donc toujours vraie et donc tu boucles à l'infini...Essaie de mettre a = Int(Feuil2.Cells(22, y)) et b = Int(Feuil2.Cells(21, y)) avant ton "Loop"...
On entend par une belle solution, la solution simple et facile d'un problème difficile et compliqué
0
Ok sa marche!!! :)

Je suis débutant en programmation et sa faisait pas mal de temps que je recherchais, donc merci beaucoup pour ton aide tompols!!!! :)

Cordialement

Niko
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
23 mars 2010 à 16:21
de rien, bonne fin de journée :)
0
merci à toi aussi! :)
0