SOMME de cellules sauf celles qui contiennent une formule
5 réponses
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...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
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
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... ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
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." <dam-mail2004@ifrance.com> a écrit dans le message de news:
#lYwqJvTEHA.2716@tk2msftngp13.phx.gbl...
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...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
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... ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
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
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" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
uxbY6xvTEHA.3336@TK2MSFTNGP10.phx.gbl...
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
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
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
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.
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
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?
···················································· 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
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) ]
dam-mail2004@ifrance.com
····················································
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
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?
···················································· 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