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

Somme dynamique de cellules figurant sur plusieurs feuilles

4 réponses
Avatar
alphayr
Je souhaiterais d'une part sommer la même cellule de plusieurs feuilles
(exemple la cellule C3).

et d'autre part

définir de manière dynamique la plage de cellules sur plusieurs feuilles à
sommer

Dans la cellule C3 de la Feuille 1 : SOMME(Feuil2:Feuil5!C3)
En fonction des cellules C1 = "Feuil2" et C2 = "Feuil5" par exemple

si l'on change C2 pour "Feuil6" et Obtenir dans C3 la SOMME(Feuil2:Feuil6!C3)

Quelqu'un a t-il une astuce pour ce dernier problème ?

J'ai essayé avec la fonction INDIRECT mais elle ne renvoie que la référence
à une cellule et non à une plage de cellules.

D'avance merci pour vos contributions.

4 réponses

Avatar
Yvan
Bonsoir Alphayr.

Je peux te proposer çà: http://cjoint.com/?ibwzMUW3Kx

Il y a trois lignes de VBA dans le code de Feuil1.

Bonne soirée!

Yvan



Je souhaiterais d'une part sommer la même cellule de plusieurs feuilles
(exemple la cellule C3).

et d'autre part

définir de manière dynamique la plage de cellules sur plusieurs feuilles à
sommer

Dans la cellule C3 de la Feuille 1 : SOMME(Feuil2:Feuil5!C3)
En fonction des cellules C1 = "Feuil2" et C2 = "Feuil5" par exemple

si l'on change C2 pour "Feuil6" et Obtenir dans C3 la SOMME(Feuil2:Feuil6!C3)

Quelqu'un a t-il une astuce pour ce dernier problème ?

J'ai essayé avec la fonction INDIRECT mais elle ne renvoie que la référence
à une cellule et non à une plage de cellules.

D'avance merci pour vos contributions.


Avatar
PMO
Bonjour,

Une approche avec une fonction en VBA.
Copiez le code suivant dans un module standard.

'**********
Function PMO_SOMMEDYNAMIQUE _
(ListeFeuilles As Range, PlageDonnees As Range) As Double
Dim Cliste As Range
Dim Cplage As Range
Dim Plage As Range
Dim i&
Dim x#
Application.Volatile
For Each Cliste In ListeFeuilles
For i& = 1 To Worksheets.Count
If UCase(Cliste) = _
UCase(Worksheets(i&).Name) Then
Set Plage = _
Worksheets(i&).Range(PlageDonnees.Address)
For Each Cplage In Plage
If IsNumeric(Cplage) Then x# = x# + Cplage
Next Cplage
End If
Next i&
Next Cliste
PMO_SOMMEDYNAMIQUE = x#
End Function
'**********

UTILISATION
La fonction présente 2 arguments
1) ListeFeuilles
Dans la formule =PMO_SOMMEDYNAMIQUE(E1:E7;A1:B2) c'est le premier
argument soit E1:E7. Vous avez 7 cellules que vous pouvez renseigner
du nom des feuilles que vous voulez calculer. Par exemple en E3 Feuil1
et en E7 FEUIL5 (remarquez que la fonction n'est pas sensible
à la casse c'est-à-dire aux minuscules majuscules mais, en
revanche, réclame que le nom soit correctement orthographié)
Si certaines cellules ne sont pas renseignées la fonction ne considèrera
que celles qui sont renseignées. Il faut au moins une cellule renseignée
sinon la fonction renvoie 0.
Ainsi vous pouvez ajouter le nom d'autres feuilles dans cette
plage ou en supprimer.
2) PlageDonnees
Dans la formule =PMO_SOMMEDYNAMIQUE(E1:E7;A1:B2) c'est le second
argument soit A1:B2. Chaque cellule de cette plage est calculée. Si vous
n'avez
besoin que d'une seule cellule pour le calcul il suffit d'indiquer
A1 par exemple.

EXEMPLE d'après le votre
En E1 tapez =PMO_SOMMEDYNAMIQUE(C1:C2;C3)
Si en C1 on a Feuil2 et en C2 Feuil5 vous obtiendrez en E1
la somme de la cellule C3 de ces 2 feuilles.
Si vous changez la valeur Feuil5 de C2 en Feuil6 le résultat dépendra
alors de ces feuilles.

Cordialement.
--
PMO
Patrick Morange



Je souhaiterais d'une part sommer la même cellule de plusieurs feuilles
(exemple la cellule C3).

et d'autre part

définir de manière dynamique la plage de cellules sur plusieurs feuilles à
sommer

Dans la cellule C3 de la Feuille 1 : SOMME(Feuil2:Feuil5!C3)
En fonction des cellules C1 = "Feuil2" et C2 = "Feuil5" par exemple

si l'on change C2 pour "Feuil6" et Obtenir dans C3 la SOMME(Feuil2:Feuil6!C3)

Quelqu'un a t-il une astuce pour ce dernier problème ?

J'ai essayé avec la fonction INDIRECT mais elle ne renvoie que la référence
à une cellule et non à une plage de cellules.

D'avance merci pour vos contributions.


Avatar
alphayr
Merci j'ai d'abord testé la contribution de Yvan.

Mais j'essaierai la fonction proposée qui semble répondre exactement à mon
besoin.


Bonjour,

Une approche avec une fonction en VBA.
Copiez le code suivant dans un module standard.

'**********
Function PMO_SOMMEDYNAMIQUE _
(ListeFeuilles As Range, PlageDonnees As Range) As Double
Dim Cliste As Range
Dim Cplage As Range
Dim Plage As Range
Dim i&
Dim x#
Application.Volatile
For Each Cliste In ListeFeuilles
For i& = 1 To Worksheets.Count
If UCase(Cliste) = _
UCase(Worksheets(i&).Name) Then
Set Plage = _
Worksheets(i&).Range(PlageDonnees.Address)
For Each Cplage In Plage
If IsNumeric(Cplage) Then x# = x# + Cplage
Next Cplage
End If
Next i&
Next Cliste
PMO_SOMMEDYNAMIQUE = x#
End Function
'**********

UTILISATION
La fonction présente 2 arguments
1) ListeFeuilles
Dans la formule =PMO_SOMMEDYNAMIQUE(E1:E7;A1:B2) c'est le premier
argument soit E1:E7. Vous avez 7 cellules que vous pouvez renseigner
du nom des feuilles que vous voulez calculer. Par exemple en E3 Feuil1
et en E7 FEUIL5 (remarquez que la fonction n'est pas sensible
à la casse c'est-à-dire aux minuscules majuscules mais, en
revanche, réclame que le nom soit correctement orthographié)
Si certaines cellules ne sont pas renseignées la fonction ne considèrera
que celles qui sont renseignées. Il faut au moins une cellule renseignée
sinon la fonction renvoie 0.
Ainsi vous pouvez ajouter le nom d'autres feuilles dans cette
plage ou en supprimer.
2) PlageDonnees
Dans la formule =PMO_SOMMEDYNAMIQUE(E1:E7;A1:B2) c'est le second
argument soit A1:B2. Chaque cellule de cette plage est calculée. Si vous
n'avez
besoin que d'une seule cellule pour le calcul il suffit d'indiquer
A1 par exemple.

EXEMPLE d'après le votre
En E1 tapez =PMO_SOMMEDYNAMIQUE(C1:C2;C3)
Si en C1 on a Feuil2 et en C2 Feuil5 vous obtiendrez en E1
la somme de la cellule C3 de ces 2 feuilles.
Si vous changez la valeur Feuil5 de C2 en Feuil6 le résultat dépendra
alors de ces feuilles.

Cordialement.
--
PMO
Patrick Morange



Je souhaiterais d'une part sommer la même cellule de plusieurs feuilles
(exemple la cellule C3).

et d'autre part

définir de manière dynamique la plage de cellules sur plusieurs feuilles à
sommer

Dans la cellule C3 de la Feuille 1 : SOMME(Feuil2:Feuil5!C3)
En fonction des cellules C1 = "Feuil2" et C2 = "Feuil5" par exemple

si l'on change C2 pour "Feuil6" et Obtenir dans C3 la SOMME(Feuil2:Feuil6!C3)

Quelqu'un a t-il une astuce pour ce dernier problème ?

J'ai essayé avec la fonction INDIRECT mais elle ne renvoie que la référence
à une cellule et non à une plage de cellules.

D'avance merci pour vos contributions.




Avatar
alphayr
Merci pour cette contribution qui fonctionne parfaitement.

Je n'avais pas pensé et ne savais pas exploiter les évenements d'Excel.


Bonsoir Alphayr.

Je peux te proposer çà: http://cjoint.com/?ibwzMUW3Kx

Il y a trois lignes de VBA dans le code de Feuil1.

Bonne soirée!

Yvan



Je souhaiterais d'une part sommer la même cellule de plusieurs feuilles
(exemple la cellule C3).

et d'autre part

définir de manière dynamique la plage de cellules sur plusieurs feuilles à
sommer

Dans la cellule C3 de la Feuille 1 : SOMME(Feuil2:Feuil5!C3)
En fonction des cellules C1 = "Feuil2" et C2 = "Feuil5" par exemple

si l'on change C2 pour "Feuil6" et Obtenir dans C3 la SOMME(Feuil2:Feuil6!C3)

Quelqu'un a t-il une astuce pour ce dernier problème ?

J'ai essayé avec la fonction INDIRECT mais elle ne renvoie que la référence
à une cellule et non à une plage de cellules.

D'avance merci pour vos contributions.