Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SOMME de cellules sauf celles qui contiennent une formule

5 réponses
Avatar
géjoun.
Bonjour,

Existe t'il une formule ou un module VBA qui permette d'obtenir en A37 la
somme d'une suite de cellules (par ex. A1:A36), mais que dans la somme de
ces cellules, ne soit pas prise en compte les cellules contenant une formule
(par ex;, si A2 il y a la formule SI, alors, la somme A37 ne prend pas en
compte le résultat, et si en A10, il y a une SOMME, le total en A37 n'en
tiens pas compte...etc...). En fait, que la somme finale ne totalise que les
valeurs renseignées et non les résultats de formules.

J'ai essayé avec SOMME.SI et NB.SI mais ça donne rien de concluant.

Merci!

--
__________________________
Géjoun.
dam-mail2004@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

5 réponses

Avatar
AV
Dans un module ordinaire :

Function SOM(plage As Range)
For Each c In plage
If c.HasFormula Then
Else: x = c.Value + x
End If
Next
SOM = x
End Function

A utiliser comme suit :
=SOM(A1:A10)

AV
Avatar
Lolote
Salut Géjoun,

Voici une première réflection qui marche mais qui n'est pas très pratique.
Copie ce code dans un module.

Sub TestSiFormule()
Dim xSom
Range("A1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Formula = True Then
xSom = xSom + ActiveCell.Value
End If
ActiveCell.Offset(1, 0).Activate
Loop
Range("A37").Select
ActiveCell.FormulaR1C1 = xSom
End Sub

La macro test chaque valeur et ne prend en compte que ce qui ne relève pas
d'une formule, et te copie la valeur calculée en A37.
La macro tourne sur chaque valeur tant qu'elle na pas rencontrée de cellule
vide.

En espérant que cela te rende service.

Peut être surement e certainement amélioré.

@+ Lolote

"géjoun." a écrit dans le message de news:
#
Bonjour,

Existe t'il une formule ou un module VBA qui permette d'obtenir en A37 la
somme d'une suite de cellules (par ex. A1:A36), mais que dans la somme de
ces cellules, ne soit pas prise en compte les cellules contenant une
formule

(par ex;, si A2 il y a la formule SI, alors, la somme A37 ne prend pas en
compte le résultat, et si en A10, il y a une SOMME, le total en A37 n'en
tiens pas compte...etc...). En fait, que la somme finale ne totalise que
les

valeurs renseignées et non les résultats de formules.

J'ai essayé avec SOMME.SI et NB.SI mais ça donne rien de concluant.

Merci!

--
__________________________
Géjoun.

····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯




Avatar
Lolote
Bien joué Alain,
j'ai bien assayé de faire quelque chose mais je retiens ta solution et crois
moi que ton système va beaucoup m'aider dans la réalisation d'autres
formules.

@+ Lolote

"AV" a écrit dans le message de news:

Dans un module ordinaire :

Function SOM(plage As Range)
For Each c In plage
If c.HasFormula Then
Else: x = c.Value + x
End If
Next
SOM = x
End Function

A utiliser comme suit :
=SOM(A1:A10)

AV




Avatar
AV
Bien joué Alain,
j'ai bien assayé de faire quelque chose mais je retiens ta solution et crois
moi que ton système va beaucoup m'aider dans la réalisation d'autres
formules.


Vous m'en voyez fort aise chère Lolotte !

;-)
AV

Avatar
géjoun.
Salut,

Je viens d'essayer celle d'Alain, et elle marche au poil, comme d'hab! :-)
Par contre, quelle est la différence entre ta macro et celle que me propose
AV? J'arrive pas à trouver en quoi ça change?

Merci!

--
__________________________
Géjoun.
[ Moi, quand j'serai grand, j'veux t'être Alain Vallon! :o) ]

····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯



Récemment, Lolote nous a expliqué:
|| Salut Géjoun,
||
|| Voici une première réflection qui marche mais qui n'est pas très
|| pratique. Copie ce code dans un module.
||
|| Sub TestSiFormule()
|| Dim xSom
|| Range("A1").Select
|| Do While ActiveCell.Value <> ""
|| If ActiveCell.Formula = True Then
|| xSom = xSom + ActiveCell.Value
|| End If
|| ActiveCell.Offset(1, 0).Activate
|| Loop
|| Range("A37").Select
|| ActiveCell.FormulaR1C1 = xSom
|| End Sub
||
|| La macro test chaque valeur et ne prend en compte que ce qui ne
|| relève pas d'une formule, et te copie la valeur calculée en A37.
|| La macro tourne sur chaque valeur tant qu'elle na pas rencontrée de
|| cellule vide.
||
|| En espérant que cela te rende service.
||
|| Peut être surement e certainement amélioré.
||
|| @+ Lolote