Optimise une boucle

Fermé
novice - 11 déc. 2011 à 14:07
 novice - 11 déc. 2011 à 14:36
Bonjour,





bonjour le forum j'ai un pb avec une boucle qui prends beaucoup de temps merci pour vos reponses:

p1 = 211876: p2 = 17296: p3 = 1081: p4 = 46
s1 = 1: s2 = 2: s3 = 3: s4 = 4: s5 = 4

st1: If nx > p1 Then nx = nx - p1: p1 = p1 - p2: p2 = p2 - p3: p3 = p3 - p4: p4 = p4 - 1: s1 = s1 + 1: s2 = s2 + 1: s3 = s3 + 1: s4 = s4 + 1: s5 = s5 + 1: GoTo st1

st2: If nx > p2 Then nx = nx - p2: p2 = p2 - p3: p3 = p3 - p4: p4 = p4 - 1: s2 = s2 + 1: s3 = s3 + 1: s4 = s4 + 1: s5 = s5 + 1: GoTo st2

st3: If nx > p3 Then nx = nx - p3: p3 = p3 - p4: p4 = p4 - 1: s3 = s3 + 1: s4 = s4 + 1: s5 = s5 + 1: GoTo st3

st4: If nx > p4 Then nx = nx - p4: p4 = p4 - 1: s4 = s4 + 1: s5 = s5 + 1: GoTo st4

s5 = s5 + nx: s(1) = s1: s(2) = s2: s(3) = s3: s(4) = s4: s(5) = s5

1 réponse

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
11 déc. 2011 à 14:19
Je ne sais quel langage tu utilises mais tu peux gagner un peu de temps en remplaçant:
st1: If nx > p1 Then nx = nx - p1: p1 = p1 - p2: p2 = p2 - p3: p3 = p3 - p4: p4 = p4 - 1: s1 = s1 + 1: s2 = s2 + 1: s3 = s3 + 1: s4 = s4 + 1: s5 = s5 + 1: GoTo st1
par
n=0
st1: If nx > p1 Then nx = nx - p1: p1 = p1 - p2: p2 = p2 - p3: p3 = p3 - p4: p4 = p4 - 1: n = n + 1: GoTo st1
s1 = s1 + n: s2 = s2 + n: s3 = s3 + n: s4 = s4 + n: s5 = s5 + n
Bonne continuation
1
merci pour votre réactivité la boucle tourne tres bien.elle est juste lente
je souhaiterai savoir si il existe une formule capable de donnee le meme resultat ,c'est en vba excel
0