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.
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.
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.
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.
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.
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.
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.
alphayr
Merci pour cette contribution qui fonctionne parfaitement.
Je n'avais pas pensé et ne savais pas exploiter les évenements d'Excel.