Faq/Calc/125

    From The Document Foundation Wiki
    < Faq‎ | Calc(Redirected from FR/FAQ/Calc/125)
    This page is a translated version of the page Faq/Calc/125 and the translation is 100% complete.

    Comment réaliser un cumul avec les itérations ?

    Contexte : on souhaite cumuler un résultat de calcul avec le résultat précédent. Comment procéder sachant qu'en principe lorsqu'on modifie les valeurs "source" du calcul ce dernier est refait et ne "mémorise" pas la valeur précédente ?

    Dans l'exemple suivant le résultat du calcul se trouve en C7 :

    =C10-C13+C16
    
    copie d'écran calcul à cumuler
    Contexte de départ

    On souhaiterait pouvoir saisir de nouvelles valeurs en C10, C13 ou C16 et que le résultat de l'opération se cumule avec le résultat précédent.

    Moyennant quelques contraintes ceci peut être réalisé via les itérations.

    copie d'écran cf. infra explications
    Réalisation du cumul


    Explications

    • Commençons tout d'abord par... la possibilité de réinitialiser le cumul. Nous gérons cela par la valeur contenue dans une cellule "test". Par exemple, si C5 contient zéro, le cumul doit être réinitialisé.
    • Il faut ensuite régler un pas d'itération par le menu Outils ▸ Options ▸ LibreOffice Calc ▸ Calcul. Définir à 1 provoque 2 calculs. Mais on ne veut pas ajouter deux fois C7 au cumul. La solution est simple : on divisera le résultat cumulé par 2 (cf. ci-dessous en E7).
    • La valeur de changement minimum définira indirectement la valeur maximum prise en compte. Par exemple ici, avec une valeur de 10000, une valeur en C7 supérieure à 20000 provoquera une erreur 523 (Le calcul ne converge pas).
    • Continuons par le cumul lui-même. Le calcul à cumuler est déjà réalisé en C7 mais on ne peut utiliser cette cellule comme source du cumul car il faut que le cumul se mette à jour lors de la saisie d'une des cellules "sources" du calcul (celles en orange dans la copie d'écran). On "refait" donc le calcul en E7 en incluant le test de réinitialisation et la division par 2 :
    =SI(C5=0;0;E7+((C10-C13+C16)/2))
    
    • Lors du chargement du classeur le logiciel recalcule... ce qui est gênant pour les cumuls. On prend donc la précaution de désactiver ce calcul automatique (menu Données ▸ Calculer ▸ Calculer automatiquement ou Outils ▸ Contenu des cellules dans les versions précédentes) et le recalcul sera provoqué "manuellement" par Ctrl + ⇧ Maj + F9.

    Dans l'exemple joint la feuille est protégée (sans mot de passe) pour que seules les zones où la saisie est attendue soient accessibles.