Bonjour à tous,
Je cherche à faire des sommes conditionnelles de cellules provenant d'un nombre de pages variables d'un classeur.
Par exemple, obtenir la somme des cellules B1 de l'ensemble des feuilles du classeur dont la cellule A1 répond à un critère donné (A1>0).
Le nombre de feuilles du classeurs est amené à varier très régulièrement.
J'ai donc essayé de construire une fonction codée comme macro, avec l'idée:
Somme_feuilles_actives(Cellule de la feuille ou se trouve la condition à vérifier, valeur à laquelle comparer ce critère, référence de la cellule à ajouter à la somme)
Par exemple, la formule, =Somme_feuilles_actives("A1","oui","C1"), renverrait la somme des cellules C1 des feuilles du documents dont la cellule A1 contient la valeur "oui".
Ce qui m'a donné:
Jusque là, pas de problème, j'ai galéré un peu mais mon code fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Function Somme_feuilles_actives(cellcritere as String, critere as string, celltoadd as String) Dim LaSomme as Double Dim Ensemble_Feuilles Dim oFeuille Dim ocellule Dim ocellule2 Dim i As integer Ensemble_Feuilles=ThisComponent.getSheets() For i=0 to Ensemble_Feuilles.getCount()-1 oFeuille=Ensemble_Feuilles.getbyindex(i) ocellule=oFeuille.getCellRangeByName(cellcritere) if ocellule.getString()=critere then ocellule2=oFeuille.getcellrangebyname(celltoadd) LaSomme = LaSomme + ocellule2.getValue() endif Next Somme_feuilles_actives=LaSomme End Function
Par contre lorsque je cherche à m'en servir comme fonction, je m'aperçois que les valeurs des cellules dans lesquelles j'ai utilisé cette fonction ne se mettent à jour que lorsque je viens intervenir manuellement sur leur contenu, mais pas du tout lorsque les valeurs des feuilles cibles changent.
Comment faire pour que cette formule se comporte comme un formule standard de Libre Office et laisse les cellules se valoriser automatiquement ?
Une idée?
En vous remerciant pour vos conseils,
Partager