Moustike31
Messages postés19Date d'inscriptionmardi 2 octobre 2012StatutMembreDernière intervention 2 octobre 2012
-
29 mai 2009 à 10:42
Moustike31
Messages postés19Date d'inscriptionmardi 2 octobre 2012StatutMembreDernière intervention 2 octobre 2012
-
29 mai 2009 à 15:51
Bonjour,
En VBA j'ai écris un code et je voudrai rajouter Do ... Loop until, mais je sais pas trop comment mis prendre, est ce que quelqu'un pourrai me dire comment l'utiliser?
Merci.
Nat
Moustike31
Messages postés19Date d'inscriptionmardi 2 octobre 2012StatutMembreDernière intervention 2 octobre 2012 29 mai 2009 à 14:41
C'est gentil d'avoir répondu.
Le truc c'est que je suis une réelle débutante et que Do ... Loop until je dois le mettre en plein milieu d'un code sauf que j'ai fais plusieurs essais et je n'arrive pas à trouver le bon emplacement.
Mais merci quand même.
Moustike31
Messages postés19Date d'inscriptionmardi 2 octobre 2012StatutMembreDernière intervention 2 octobre 2012 29 mai 2009 à 15:51
Merci pour vos indications.
Je vous laisse tout de même un bout de mon code pour que vous puissiez comprendre. je vais quand meme réfléchir dessus aussi.
A la base (sans mettre do ... Loop until) mon code bloque (en rouge)
En fait c un bout de code pour une optimisation de barre.
Dans tableautoutesréfrences se trouve toutes les références de lame avec les longueur de barre disponible.
Table barre est le débit d'une reference et barrebrut est une longueur disponible pour la meme référénce.
Par exemple pour la référence 1230 les longueur disponible sont 4500, 6000 et 7000 mm.
Or si j'ai un débit de 5000 le code bloque car il ne peut pas analyser avec la longueur 4500 et je voudrai qu'il la passe et donne la mise en barre pour 6000 et 7000.
J'espère que j'ai été assez explicite.
code :
Sub traiteRefenCours(ByRef tabRefTraitement() As String, lame As Boolean)
Dim j As Integer
Dim z As Integer
Dim barreBrut As Long
Dim v As Integer
Dim m As Integer
v = 1
m = 4
Dim Qte As Integer
Dim cumulQte As Integer
Dim cumulChutes As Long
cumulQte = 1
cumulChutes = 0
If lame = True Then
'cas d'une lame optilisation de mise en barre
While tableauToutesReferences(z, 0) <> ""
If tabRefTraitement(j, 0) = tableauToutesReferences(z, 0) Then
While tableauToutesReferences(z, v) <> ""
barreBrut = tableauToutesReferences(z, v)
While tabRefTraitement(j, 0) <> ""
Qte = tabRefTraitement(j, 1)
While Qte > 0
If (barreBrut - tabRefTraitement(j, 2) >= 0) Then
Qte = Qte - 1
barreBrut = barreBrut - tabRefTraitement(j, 2) - tabRefTraitement(j, 4)
tableBarre(l, 0) = tabRefTraitement(j, 0)
tableBarre(l, m) = tabRefTraitement(j, 2)
m = m + 1
Else
'reste de la barre brut
tableBarre(l, 2) = barreBrut
cumulChutes = cumulChutes + barreBrut
barreBrut = tableauToutesReferences(z, v)
m = m + 1
tableBarre(l, 3) = tableauToutesReferences(z, v)
'on compte le nombre de barres utilisees par reference
cumulQte = cumulQte + 1
l = l + 1
m = 4
End If
Wend
' si le restant de ma barre moins la coupe est Superieur a 0, on peut couper la barre
j = j + 1
Wend
cumulChutes = cumulChutes + barreBrut
tableBarre(l, 2) = cumulChutes
cumulChutes = 0
m = m + 1
tableBarre(l, 3) = tableauToutesReferences(z, v) '
m = m + 1
tableBarre(l, 1) = cumulQte
cumulQte = 1
j = 0
l = l + 1
m = 4
v = v + 1
Wend
End If
j = 0
z = z + 1
Wend
Else
'cas d'un cintre, pas besoin d'optimiser
While tabRefTraitement(j, 0) <> ""
j = j + 1
Wend
tableBarre(l, 0) = tabRefTraitement(j - 1, 0)
tableBarre(l, 1) = tabRefTraitement(j - 1, 3)
tableBarre(l, 2) = -1 '-1 indique un cintre, cette valeur sera teste lors de l'ecriture notepad
l = l + 1
End If