Rapport de message :*
 

Re: bouton qui permets une itération dans VBA lorsqu'on clique dessus

Titre du sujet : Re: bouton qui permets une itération dans VBA lorsqu'on clique dessus
par JeanMarie le 27/05/2011 22:38:39

Bonsoir Gigi, Didier, le forum

Comme tu utilises le VBA pour incrémenter le compteur de la cellule C20, tu pourrais dans ton code faire le calcul et écrire la nouvelle valeur dans les cellules C2 et C3.
Dans ce cas attention au calcul de la feuille, les formules "itératoire" sont calculées différement des autres.

Je te propose de résoudre tes problèmes, non pas par code VBA mais par formules.

1) C20 = 1 alors C2 et C3 = 0, et C20 = 2 alors C3 = 0

Tu rajoutes la condition dans tes deux formules
en C2 =SI(C20=1;0;0,8 * C2 + 0,2 * C4)
en C3 =SI(C20<3;0;0,8 * C3 + 0,2 * C5)
2) dès que je change la valeur de n'importe quelle cellule de la feuille


Ce problème est le plus compliqué à résoudre (enfin )

Dans ta feuille rajoute dans la cellule A1 la formule ci-dessous
=SI(C20=1;0;A1+(C20-A1))
dans la cellule A23 la formule ci-dessous
=SI(C20=1;0;A23+(C20-A23))
ou
=A1
Ces deux formules vont permettre de savoir si les deux formules en C2 et C3 doivent être calculées. Les formules "itératoires" sont calculées dans une ordre stricte, en commençant en A1 puis vers la droite et vers le bas. Au moment du calcul de la cellule C2, la valeur de la cellule en A1 aura été recalculée, contrairement à la valeur de la cellule A23 qui sera calculée plus tard, elle conserve la valeur calculée dans le cycle itératoire précédent. 
En comparant les valeurs des cellules A1 et A23, on sait si la valeur doit être recalculée.

Tu dois changer les formules en C2 et C3
=SI(C20=1;0;SI(A1<>A23;0,8 * C2 + 0,2 * C4;C2))
=SI(C20<3;0;SI(A1<>A23;0,8 * C3 + 0,2 * C5;C3))
Voilà pour ton problème.

@+Jean-Marie