Problème utilisation boucle do until VB

[Résolu/Fermé]
Signaler
-
 NiKo -
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

2 réponses

Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
454
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é
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
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
454
de rien, bonne fin de journée :)
merci à toi aussi! :)