Somme cellules non adjacentes contenant Div/0

Résolu/Fermé
jecker68 - 25 mars 2009 à 11:08
 jecker68 - 25 mars 2009 à 19:05
Bonjour,

J'ai déjà cherché dans le forum une réponse à mes questions, on s'en rapproche souvent, mais ça ne fonctionne pas...

Je dispose d'un classeur Excel avec 7 onglets. Ce classeur est actualisé mensuellement.
Dans certains onglets, j'ai réussi à éliminer les #DIV/0! mais ce n'est pas possible partout.

J'aimerai obtenir le total des mois déjà passés (ceux ci ont un montant) sans changer ma formule chaque mois. Ma formule est =SOMME(E5;H5;K5;N5;Q5;T5;W5;Z5;AC5;AF5;AI5;AL5). Les formules ne sont pas adjacentes (pas en une seule plage). Jusqu'à T5, j'ai un montant, après j'ai l'erreur #DIV/0!, que je n'arrive pas à éliminer.
Comment obtenir la somme jusqu'à T5 sans raccourcir ma formule somme et la changer chaque mois?

Pour simplifier, comment dire à Excel de faire la somme des mois contenant un montant et de laisser tomber les erreurs? Cette formule doit être figée dans le temps = éviter les manipulations mensuelles, mis à part l'ajout des montants mensuels.

Je ne connais rien à VBA, et j'ai ce travail à effectuer sur 4 onglets... :$

Par avance, je vous remercie

Béné

9 réponses

Coucou,

Effectivement, j'ai passé mon après midi sur ce classeur à enlever les erreurs #DIV/0! comme tu me l'as dit.
Avant, je n'avais pas de 0 intempestifs, mais maintenant avec la formule si(esterreur(...), j'en ai quelques uns. j'irai voir dans un autre sujet pour les enlever.

J'ai collé le code et effectivement tout marche à la perfection. C'est génial, tu es un petit Einstein de l'informatique.

Vous m'avez donné une solution double : avec sommeplage si les erreurs ne peuvent être enlevés et simplement somme lorsqu'il n'y a plus d'erreur.

Merci beaucoup de votre gentilesse et du temps passé

Béné
2
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
25 mars 2009 à 11:37
Bonjour,

La problème me paraissait simple mais les plages discontinues bloquent les fonctions classiques d'Excel.

Je te propose une fonction VBA à coller dans un module du classeur
Function SommePlage(Plage As Range)
Dim c
SommePlage = 0
For Each c In Plage.Cells
    If Not IsError(c) And IsNumeric(c) Then SommePlage = SommePlage + c
Next c
End Function

La fonction à utiliser devient :
=SommePlage((E5;H5;K5;N5;Q5;T5;W5;Z5;AC5;AF5;AI5;AL5))

Attention à bien mettre la série de cellules entre parenthèses pour qu'elle passe comme un seul argument.

Mais si quelqu'un a une idée uniquement Excel, je suis intéressé.

A +
1
Néanmoins, j'ai juste oublié de dire un ptit truc : quand j'ouvre le classeur et qu'aucun montant n'est inséré, j'ai tout de même des nombres qui s'affichent dans la cellule où on peut trouver la formule sommeplage...
Mais merci tout de même, au moins mes tableaux ressemblent à quelque chose maintenant :)
1
Bonjour,

Si on possède l'erreur #Valeur!, peut on appliquer les mêmes solutions?

Merci
0

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

Posez votre question
dna.factory Messages postés 25518 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 24 janvier 2025 1 613
25 mars 2009 à 11:12
= SOMME.SI
et dans la condition, tu mets valeur > 0, ou non nulle, ou différente de #DIV/0
sachant qu'il est préférable d'intervenir en amont en conditionnant ces cellules #div/0 pour que le calcul ne se fasse que quand il est possible, et afficher simplement 0 ou rien sinon
0
... sachant qu'il est préférable d'intervenir en amont en conditionnant ces cellules #div/0 pour que le calcul ne se fasse que quand il est possible, et afficher simplement 0 ou rien sinon
> J'ai tout essayé, et il est impossible de trouver une solution à #DIV/0. Le problème, c'est que j'ai 3 colonnes pour chaque mois, et je peux remplir une colonne au hasard, les résultats correspondant (% et montant/quantité) s'afficheront dans les 2 autres colonnes automatiquement. En fait, c'est un travail de simulation, et pour l'instant je ne sais pas quelle donnée (quelle colonne) sera simulée, dans le cas contraire, je pourrai supprimer la colonne en question et ainsi supprimer l'erreur #DIV/0.

= SOMME.SI et dans la condition, tu mets valeur > 0, ou non nulle, ou différente de #DIV/0
> Pour la formule somme.si, le problème est que ce n'est pas une plage mais des cellules non adjacentes, j'avais déjà essayé, mais j'ai pas réussi

Merci de ton aide
0
dna.factory Messages postés 25518 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 24 janvier 2025 1 613
25 mars 2009 à 11:49
je ne comprends pas pourquoi tu ne peux pas supprimer le Div /0
pour chacun de tes calculs de division, il suffit de mettre =SI (diviseur <> "";calcul;0)
de cette manière, même si tu ne remplis pas le champ, la division ne se fait pas, et on affiche un 0 qui sera traité tranquillement dans le calcul
0
Merci pour ton aide, néanmoins je n'y arrive toujours pas, je suppose que c'est dû au fait que je ne connaisse rien à VBA...
Je modifie donc ma formule somme en =SOMMEPLAGE((E5;H5;K5;N5;Q5;T5;W5;Z5;AC5;AF5;AI5;AL5)) et ça m'indique #Nom?
Pour insérer le code VBA, je dois cliquer sur l'onglet, visualiser le code et coller ce que tu m'as inscrit ?
Aurais-je sauté une étape ?
En tout cas, un grand merci de se casser la tête pour moi.
Néanmoins, beaucoup d'erreurs de ce type, ne devrait plus exister sous excel, est-ce le cas avec les nouvelles versions ?
0
Je ne comprends pas pourquoi tu ne peux pas supprimer le Div /0
pour chacun de tes calculs de division, il suffit de mettre =SI (diviseur <> "";calcul;0)
de cette manière, même si tu ne remplis pas le champ, la division ne se fait pas, et on affiche un 0 qui sera traité tranquillement dans le calcul

> J'ai déjà fait ce que tu me dis de faire, néanmoins, les calculs des 3 colonnes se basent les uns sur les autres étant donné le fait que je veux, en modifiant une colonne, que la correspondance s'affiche dans les 2 autres...
Pour l'instant vu qu'aucune colonne n'a de montant, forcément avec cette "concaténation" des calculs, ça donne ce résultat
0
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
25 mars 2009 à 12:48
Re,

Effectivement, je pense également que tu peux corriger le problème en amont.

Si en E5 tu as la formule =formulequelconque tu corriges en :
=si(esterreur(formulequelconque);"";formulequelconque)
(ou 0 à la place de "" selon ce que tu veux obtenir)


Par rapport à la fonction que je t'ai créée, le code doit être collé dans un module et non pas dans le code de la feuille (comme tu l'as fait). Dans Microsoft Visual Basic tu crées un nouveau module (Insertion\Module) et tu colloes le code.
Pour aller dans Visual Basic, tu peux faire comme précédemment (onglet/visualiser le code)
NB La fonction est alors utilisable dans tous les onglets du classeur quelque soit la plage que tu choisis, continue ou discontinue
0