- Dans Outils -> Options -> Onglet "Calcul", coche "Itération" et entre
le nombre 1 dans la zone de texte "Nombre maximal d'itérations".
- En D3, utilise la formule =A3+D3
Le problème, c'est que cette formule est volatile, c'est-à-dire qu'elle
est recalculée à chaque fois qu'une saisie ou un calcul quelconque se
produit n'importe où dans le classeur. Si A3 contient 5, D3 va prendre
automatiquement comme valeurs 5, puis 10, 15 etc. à chaque nouvelle
saisie dans le classeur (et non pas seulement quand le contenu de A3 est
modifié).
J'ai créé pour ma part une petite fonction complémentaire pour Excel 97
SR-1 / Excel 95
(http://perso.wanadoo.fr/longre/excel/pages/Downloads.htm#Morefun.xll)
qui permet à une cellule d'utiliser son propre contenu, sans activer les
itérations.
Dans ton cas, cette fonction ("RAPPEL") pourrait être utilisée sous
cette forme: =RAPPEL(VRAI)+A3. Le paramètre VRAI indique que la fonction
doit se comporter de manière non volatile. Le fichier d'aide indique
quelques exemples d'utilisation de cette fonction.
A +
Laurent
voici un petit article MS qui décrit comment faire un cumul tout en formule.
En gros les infos de Laurent sont un bon début. Il manque juste une petite
astuce pour éviter que la formule de cumul ne soit volatile.
Quoi qu'il en soit la solution de Laurent d'utiliser un peu de code externe
est peut être plus facile à manipuler.
Daniel
XL: Effectuer un cumul itératif avec recalcul sélectif
ID: Q12370
-------------------------------------------------------------------------
Cette note technique concerne le(s) produit(s) suivant(s) :
- Microsoft Excel pour Windows 95, version 7.0
- Microsoft Excel pour Windows, versions 4.0, 5.0, 5.0c
- Microsoft Excel pour le Macintosh, versions 4.0, 5.0
- Microsoft Excel pour Windows NT, version 5.0
-------------------------------------------------------------------------
QUESTION :
Dans une feuille de calcul, j'ai créé des formules circulaires avec
itération pour effectuer des cumuls. Cependant, le mode de calcul étant
en automatique, chaque fois que je modifie une valeur sur cette feuille
de calcul, toutes les cellules de cumul se recalculent.
Comment dois-je procéder ?
REPONSE :
Il suffit d'utiliser la fonction CELLULE() avec l'argument "adresse", qui
renvoie l'adresse de la cellule validée, ou passée en argument.
La formule à inscrire dans la cellule de cumul devient :
=SI(CELLULE("adresse")=CELLULE("adresse";réf_à_cumuler);
SOMME(réf_à_cumuler;réf_du_cumul;réf_du_cumul)
où :
* réf_à_cumuler : est le nom ou la référence de la cellule dont la
valeur est à cumuler.
* réf_du_cumul : est le nom ou la référence de la cellule, stockant
le cumul.
EXEMPLE :
Soit la cellule B1 comportant la formule suivante :
A B
1 =A1+B1
2
Si vous avez coché Itération et que vous avez spécifié la valeur 1 comme
Nombre maximum d'itérations dans l'onglet Calcul de la boîte de dialogue
Options accessible par la commande Options du menu Outils, cette cellule
est une zone de cumul des saisies de la cellule A1. Ainsi, à chaque
saisie d'une nouvelle valeur dans la cellule A1, cette valeur viendra se
cumuler à la valeur déjà présente en B1.
Cependant, si vous saisissez une valeur dans une autre cellule quelconque de
la
feuille de calcul, la valeur saisie en A1 viendra de nouveau se cumuler à
B1. En
effet, la valeur de la cellule B1 ayant été modifiée lors du premier cumul,
les
données sources de la formule ont changé, et, donc, la formule est
recalculée.
Pour éviter ce phénomène, il vous suffit d'écrire la formule suivante
dans la cellule B1 :
A B
1 =SI(CELLULE("adresse")=CELLULE("adresse";A1);SOMME(A1;B1);B1)
2
Sachant que la fonction CELLULE("Adresse") renvoie l'adresse de la
cellule active, la fonction SI() utilisée permettra de ne cumuler la
valeur contenue en A1 que si c'est bien cette cellule qui vient d'être
modifiée.
REMARQUE :
Dans la version 4.0 d'Excel, les options de Mode de calcul sont modifiables
par
la commande Options / Mode de Calcul.
Laurent Longre a écrit dans le message <3637B3...@wanadoo.fr>...
Merci pour cette indication très intéressante. Tu es décidément une mine
inépuisable de renseignements :-)
L'astuce de MS est très bien vue, mais elle pose quand-même un petit
problème. Si la cellule contenant les valeurs à cumuler contient une
formule faisant référence à une ou plusieurs autres cellules, le cumul
ne fonctionne plus.
Si tu mets =A2 en A1, le cumul devrait se produire quand une nouvelle
entrée est faite en A2, donc l'utilisation de CELLULE("adresse") échoue.
De même si, par exemple, A1 contient un lien DDE avec mise à jour
automatique ou si son contenu est modifié par macro. Ou encore, si tu
sélectionnes par exemple la plage A1:A10 "de bas en haut" et que tu
saisis une nouvelle valeur par Ctrl-Entrée (la cellule active est A10).
Bon, je sais, je pinaille ;-)
A +
Laurent
Daniel HACHE a écrit:
Non, il faut écrire en B1 :
=SI(CELLULE("adresse")=CELLULE("adresse";A2);A1+B1;B1)
Une solution indépendante de la version d'Excel utilisée consisterait à
passer par une fonction macro XLM. Contrairement à VBA, les fonctions
XLM peuvent en effet récupérer le contenu de la cellule appelante:
=ARGUMENT("Cellule_cumul";1)
=RETOUR(CELLULE.APPELANTE()+Cellule_cumul)
Il est clair pour moi que MS **aurait dû** proposer cette solution-là,
qui est parfaitement fiable et transparente, plutôt qu'un truc limité et
reposant sur un comportement non-standard par rapport aux formules
habituelles de feuilles de calcul.
Laurent
Luc a écrit:
>
> [COUIC]
> | Si tu mets =A2 en A1, le cumul devrait se produire quand une nouvelle
> | entrée est faite en A2, donc l'utilisation de CELLULE("adresse") échoue.
Oui, absolument d'accord !
(j'aime aussi pinailler......)
Daniel
Luc a écrit dans le message <01be0418$0faa5560$LocalHost@alpha02>...