Problème utilisation boucle do until VB
Résolu
NiKo
-
NiKo -
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
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:
- Problème utilisation boucle do until VB
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Vb - Télécharger - Langages
- My people do - Télécharger - Organisation
- Bash do while ✓ - Forum Shell
2 réponses
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é
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é