[EXCEL] Somme de cellules

Résolu/Fermé
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 - 3 févr. 2011 à 20:01
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 - 6 févr. 2011 à 13:21
Bonjour,

Je suis actuellement en train de chercher comment on pourrait faire une somme de cellules.

La première entrée est invariable. Mais la deuxième non.

Exemple :

A1 = 2
B1= Somme précédentes >> B1 = 2

INSERTION D'UNE LIGNE

A1 = 2 (pas de changements)
B1 = 2 (Nouvelle entrée)
C1 = Somme précédentes >> C1 = 4

Et ainsi de suite ...


Donc, A1 reste toujours. J'ai essayé =Somme(A1:ActiveCell)

Mais ça ne semble pas fonctionner. Vais-je devoir le faire par VBA ?

Merci




14 réponses

dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 21:57
Re,

C'est COLONNE()-1 qui règle le début de la plage, donc il faut COLONNE()-3 :

=SOMME(INDIRECT("LC(-"&COLONNE()-3&"):LC(-1)";FAUX))
2
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
Modifié par dobo69 le 3/02/2011 à 21:43
bonsoir,

Dans le cas d'une insertion de colonne, la formule ci-dessous permet de toujours faire la somme des cellules situées à gauche, même après avoir inséré une colonne "juste avant" :

=SOMME(INDIRECT("LC(-"&COLONNE()-1&"):LC(-1)";FAUX))

exemple, lorsqu'on est en G1, la formule renvoie la somme A1:F1.
Si on insère une colonne entre F et G, elle renvoie la somme de A1:G1

Si vous n'avez besoin de rien, demandez-moi.
1
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
3 févr. 2011 à 20:21
Bonjour,
Si j'ai bien saisi, en B1 tu inscris :
=SOMME($A$1:B1)

Puis tu copies en C1, D1, ...

@+
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 21:30
Bonsoir,

Non, en fait, c'est une macro qui me permet d'ajouter une colonne devant la colonne sélectionnée.

Mais si je rajoute une colonne entre A1 et B1, B1 devient C1, et donc, ce qui est inscrit dans B1 va dans C1. Mais comment faire pour qu'il prenne désormais en compte B1 dans la somme ?


Adrien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 21:52
Bonsoir,

Fonctionne parfaitement, merci.

Mais si je veux qu'elle ne prenne pas en compte les deux premières colonnes (intitulés), je dois indiquer un offset quelque part ?


Merci
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 21:59
Bonsoir,

Merci, impeccable.

Adrien
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 22:05
Euuh, par contre, pour l'offset vertical, on fait comment ?

Merci

0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 22:11
plus simple :

=SOMME(INDIRECT("A1:A"&LIGNE()-1))

pour ne prendre en compte les 2 1°lignes :

=SOMME(INDIRECT("A3:A"&LIGNE()-1))
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 22:53
Bonsoir,

La "plus simple" ne fonctionne pas.

0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 23:01
c'est à dire ?
je n'ai peut etre pas compris ce que signifiait "l'offset vertical"...
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 23:03
Reprendre dans cette même cellule la même formule pour la ligne spécifiée 7
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 23:11
=SOMME(INDIRECT("A1:A"&LIGNE()-1))

fait la somme des cellules au dessus, depuis A1.
mis en A7, par exemple fait la somme de A1:A6.
Si on insère une ligne entre 6 et 7, fait alors la somme de A1:A7

Mais je pense que je n'ai pas du comprendre la question. Il va falloir etre plus explicite...
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 23:14
Eh bien c'est ça, et pour une colonne ? Je remplace &ligne par &colonne ?

0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 23:25
Eh bien c'est ça
et visiblement ce ne l'est pas...
Encore une fois, pouvez vous expliquer clairement ce que vous voulez faire ?
Sinon, vous pouvez déposer un fichier exemple (sans infos personnelles ou confidentielles) sur http://www.cijoint.fr/ et coller le lien fourni par le site sur votre prochain message en indiquant par l'exemple ce que vous cherchez à faire.
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
3 févr. 2011 à 23:27
Euuh, eh bien si, c'est exactement ce que je désirais pouvoir faire.

Merci
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
3 févr. 2011 à 23:36
=SOMME(INDIRECT("A1:A"&LIGNE()-1))

fait la somme des cellules au dessus, depuis A1.
mis en A7, par exemple fait la somme de A1:A6.
Si on insère une ligne entre 6 et 7, fait alors la somme de A1:A7


Si cela correspond à ce que vous voulez faire, alors la formule fonctionne : je l'ai testée.
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
4 févr. 2011 à 09:18
Rebonjour,

Ah, je me heurte à un problème... Lorsque je ne remplis pas la case, il la compte comme un zéro, comment ne pas la prendre en compte ?

Merci

0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
4 févr. 2011 à 20:25
Salut le forum

Je ne vois pas le rapport du zéro mais voila une formule alternative
=SOMME.SI(INDIRECT("A1:A"&LIGNE()-1);"<>0")

Mytå
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
4 févr. 2011 à 20:05
bonsoir,

effectivement, mais je ne vois pas le problème dans le cas d'une somme... (?)
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
5 févr. 2011 à 00:08
Car en réalité, c'est une moyenne (que je ne peux faire à l'aide de la fonction MOYENNE car les valeurs de cotations sont différentes)


Il faudrait une sorte de Sommeprod ...
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
5 févr. 2011 à 00:35
Re le forum

Pas besoin de SOMMEPROD
=SOMME.SI(INDIRECT("A1:A"&LIGNE()-1);">0")/NB.SI(INDIRECT("A1:A"&LIGNE()-1);">0")

Mytå
0
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
Modifié par adrienDN11 le 5/02/2011 à 12:00
Rhalalaa, et moi qui me disais hier que personne n'allait plus poster et que tout le monde était parti dormir .... Eh eh, bon, je vais tester ça mais merci en tout cas.

EDIT :

Où se situe l'endroit où je peux changer les coordonnées des lignes ?
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
Modifié par dobo69 le 5/02/2011 à 13:58
bonjour,

"A1:A"&LIGNE()-1 :

ligne() renvoie le numéro de ligne de la cellule où se situe la formule. (10 si la formule est en ligne 10)
donc ligne()-1 renvoie le numéro de la ligne précédente. (donc 9 pour suivre l'exemple)
"A1:A"&LIGNE()-1 assemble le texte "A1:A9", toujours pour le même exemple.
INDIRECT(....) interprète la chaine de texte ci-dessus comme la référence à la plage correspondante. A1:A9 est donc renvoyé sous forme de plage de cellules par INDIRECT.
On peut ensuite utiliser cette plage dans n'importe quelle formule.

Les lignes sont donc, comme pour n'importe quelle référence de plage, les chiffres de A1:A9 (de la ligne 1 à la ligne 9 - de la colonne A à la colonne A...)

ne pas hésiter non plus à consulter l'aide d'XL pour des explications sur les formules...

PS : pas besoin de SOMME.SI pour sommer les valeurs (objet de la question sur les valeurs 0 dans les sommes...) par contre pour obtenir une moyenne sans 0, il faut effectivement NB.SI (...;">0") au diviseur.

=SOMME(INDIRECT("A1:A"&LIGNE()-1))/NB.SI(INDIRECT("A1:A"&LIGNE()-1);">0")
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
6 févr. 2011 à 05:23
Re le forum

J'avais en tête de prendre en considération que les nombres positifs d'ou le SOMME.SI

Mytå
0