VBA-addition/soustraction cumulative dans une cellule

Bonjour,

j'ai programmé avec VBA une addition cumulative dans une cellule (c'est à dire que quand j'additionne ou soustraie dans la cellule c10, il s'ajoute ou se soustraie au total de la cellule c9).

La formule fonctionne sauf que quand j'enregistre elle change les valeurs toutes seules ??? comment se fait il ???

Par ailleurs, je voudrais que lorsque j'effectue une soustraction (ou entre -10 par ex, il ne modifie pas la cellule c6. En d autres termes, je souhaiterais que la cellule c6 change quand les valeurs de c9 augmente mais pas quand elles diminuent.

Est il possible dans c6 de mettre une condition du type :

si(c9 est en crescendo; alors c6=c5-(c9*1.2); c6 reste la même) ??

Merci d'avance.

Je met mon fichier en pièce jointe.

71stock-1.xlsm (18.43 Ko)

Salut,

Aurelia13 a écrit :

(c'est à dire que quand j'additionne ou soustraie dans la cellule c10, il s'ajoute ou se soustraie au total de la cellule c9).

Je pense que tu as voulu dire exactement le contraire. Si tu modifies C9, C10 est modifié par la macro.

Je n’ai pas remarqué ton problème de valeurs qui changent d’une manière inopinée à l’enregistrement. Peux-tu préciser qu’elles valeurs dans quelles cellules ?

Pour ton calcul à certaines conditions tu peux modifier ton code ainsi (il n’y a donc plus de formule en C6) :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Range("C9"), Target) Is Nothing Then Exit Sub
    [C10] = [C9] + [C10]
    If Target >= 0 Then [C6] = [C5] - ([C9] * 1.2)
End Sub

NB : Selon la charte de notre Forum, évite les mots tels que Help dans tes titres.

Cordialement.

Bonsoir,

Tu joues les apprentis sorciers avec le calcul itératif...

Je te propose de désactiver définitivement le calcul itératif, de ne jouer que sur les entrées-sorties en C10 et recalculer C9 exclusivement par VBA.

Et de supprimer les références circulaires entre entre C7, C6, D6. En jouant aussi sur C10 puisque c'est là que l'on provoque les variations... mais il faudrait que je comprennes les valeurs qui doivent être affichées selon les cas, car si l'on suit ta demande de ne pas répercuterles variation négatives en C6, la formule les rétablira à la première variation positive ! Ce qui ne semble pas être le résultat souhaité.

Je regarde de plus près.


NB- Le changement inopiné estdû au calcul itératif qui intervient à chaque recalcul !

edit : Salut Yvouille.

A voir....

Merci bcp pour vos réponses Yvouille et MFerrand !!!

MFerrand ca marche super !! haha oui j ai un peu jouer les apprenties sorcières, je test des choses pour apprendre mais je crois qu une petite formation ne serait pas de trop

Merci encore.

Tant mieux, car je n'étais pas sûr de faire une bonne interprétation de tes formules...

Bonne continuation, et à ton service (pour apprendre !)

Bonne journée.

Hey MFerrand ton aide est précieuse merci

alors si tu peux encore m aider pour un petit truc. J'ai changer les cellules de place (enfin plutôt les critères d'ordre) du coup j'ai changé le numéro des cellules dans le woorksheet, sauf que petit hic ca ne marche plus, quand j'entre la formule =c10+c13 dans la cellule c10, j'ai un message d'erreur comme si mon woorksheet n était pas pris en compte ??

32stock-sdp-1.xlsm (19.18 Ko)

Si tu recrées des références circulaires, il s'ensuivra des problèmes...

Tu supprimes la formule en C10, c'est la procédure qui fait le calcul.

Si j'ai bien vu, le reste est OK, rien d'autre à faire.

Cordialement.

J'ai fais mais le woorksheet ne marche pas, pas d'addition avec entrée/sortie en C13 ?

Ah !

Rechercher des sujets similaires à "vba addition soustraction cumulative"