OVH Cloud OVH Cloud

Function

3 réponses
Avatar
ChristianM
Bonjour,
Je souhaiterais créer une fonction qui, appliquée à une cellule (par exemple
B2) de la feuille x (je ne connais pas le nombre de feuille) somme toutes
les cellules B2 du classeur, la feuille x étant la dernière.
Je butte sur le code dont voici l'ébauche :

Function cumuler()
r = ActiveCell.Row
c = ActiveCell.Column
n = Worksheets.Count

ActiveCell.Value = 0

n = n - 1

For a = 1 To n
Sheets(a).Select
ActiveCell(r, c).Select
ActiveCell.Value = ActiveCell.Value + ActiveCell(r, c).Value
Next a

End Function

Merci de m'apporter votre aide.

3 réponses

Avatar
JB
Bonjour,

En dur: =SOMME(Feuil1:Feuil5!B2)

En matriciel: si B2 contient le no du premier onglet et D2 le no du
dernier onglet (H2:Hn.. contient les noms des onglets):

=SOMMEPROD(SOMME.SI(INDIRECT(DECALER(H2;B2;;D2-B2)&"!A1");">0"))

http://cjoint.com/?hfqxbR3YRc

Function SommeOnglet(début, fin, c As Range)
Application.Volatile
t = 0
For s = début To fin
t = t + Sheets(s).Range(c.Address)
Next s
SommeOnglet = t
End Function

Function SommeCouleurOnglet(coul, c As Range)
Application.Volatile
t = 0
For s = 1 To Sheets.Count
If Sheets(s).Tab.ColorIndex = coul Then
t = t + Sheets(s).Range(c.Address)
End If
Next s
SommeCouleurOnglet = t
End Function

Cordialement JB

Bonjour,
Je souhaiterais créer une fonction qui, appliquée à une cellule (pa r exemple
B2) de la feuille x (je ne connais pas le nombre de feuille) somme toutes
les cellules B2 du classeur, la feuille x étant la dernière.
Je butte sur le code dont voici l'ébauche :

Function cumuler()
r = ActiveCell.Row
c = ActiveCell.Column
n = Worksheets.Count

ActiveCell.Value = 0

n = n - 1

For a = 1 To n
Sheets(a).Select
ActiveCell(r, c).Select
ActiveCell.Value = ActiveCell.Value + ActiveCell(r, c).Value
Next a

End Function

Merci de m'apporter votre aide.


Avatar
ChristianM
Merci JB mais j'ai essayé tout d'abord la première solution (sansVBA) et
j'ai une fenêtre qui s'ouvre avec en en-tête "Mettre à jour les valeurs :
feuil12" suivi d'un explorateur de dossier.
Celà vient-il du fait que mes feuilles sont nommées Janv, Fév, etc...

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

Bonjour,

En dur: =SOMME(Feuil1:Feuil5!B2)

En matriciel: si B2 contient le no du premier onglet et D2 le no du
dernier onglet (H2:Hn.. contient les noms des onglets):

=SOMMEPROD(SOMME.SI(INDIRECT(DECALER(H2;B2;;D2-B2)&"!A1");">0"))

http://cjoint.com/?hfqxbR3YRc

Function SommeOnglet(début, fin, c As Range)
Application.Volatile
t = 0
For s = début To fin
t = t + Sheets(s).Range(c.Address)
Next s
SommeOnglet = t
End Function

Function SommeCouleurOnglet(coul, c As Range)
Application.Volatile
t = 0
For s = 1 To Sheets.Count
If Sheets(s).Tab.ColorIndex = coul Then
t = t + Sheets(s).Range(c.Address)
End If
Next s
SommeCouleurOnglet = t
End Function

Cordialement JB

Bonjour,
Je souhaiterais créer une fonction qui, appliquée à une cellule (par
exemple
B2) de la feuille x (je ne connais pas le nombre de feuille) somme toutes
les cellules B2 du classeur, la feuille x étant la dernière.
Je butte sur le code dont voici l'ébauche :

Function cumuler()
r = ActiveCell.Row
c = ActiveCell.Column
n = Worksheets.Count

ActiveCell.Value = 0

n = n - 1

For a = 1 To n
Sheets(a).Select
ActiveCell(r, c).Select
ActiveCell.Value = ActiveCell.Value + ActiveCell(r, c).Value
Next a

End Function

Merci de m'apporter votre aide.


Avatar
JB
=SOMME(Janvier:Décembre!B2)

Si les onglets s'appelent Janvier,Février,Mars,.., Décembre:

=SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(2006;LIGNE(INDIRECT("1:12"));1);" mmmm")&"!A1");">0"))


http://cjoint.com/?hfqYUFJnJK

JB


Merci JB mais j'ai essayé tout d'abord la première solution (sansVBA) et
j'ai une fenêtre qui s'ouvre avec en en-tête "Mettre à jour les val eurs :
feuil12" suivi d'un explorateur de dossier.
Celà vient-il du fait que mes feuilles sont nommées Janv, Fév, etc. ..

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

Bonjour,

En dur: =SOMME(Feuil1:Feuil5!B2)

En matriciel: si B2 contient le no du premier onglet et D2 le no du
dernier onglet (H2:Hn.. contient les noms des onglets):

=SOMMEPROD(SOMME.SI(INDIRECT(DECALER(H2;B2;;D2-B2)&"!A1");">0"))

http://cjoint.com/?hfqxbR3YRc

Function SommeOnglet(début, fin, c As Range)
Application.Volatile
t = 0
For s = début To fin
t = t + Sheets(s).Range(c.Address)
Next s
SommeOnglet = t
End Function

Function SommeCouleurOnglet(coul, c As Range)
Application.Volatile
t = 0
For s = 1 To Sheets.Count
If Sheets(s).Tab.ColorIndex = coul Then
t = t + Sheets(s).Range(c.Address)
End If
Next s
SommeCouleurOnglet = t
End Function

Cordialement JB

Bonjour,
Je souhaiterais créer une fonction qui, appliquée à une cellule ( par
exemple
B2) de la feuille x (je ne connais pas le nombre de feuille) somme tout es
les cellules B2 du classeur, la feuille x étant la dernière.
Je butte sur le code dont voici l'ébauche :

Function cumuler()
r = ActiveCell.Row
c = ActiveCell.Column
n = Worksheets.Count

ActiveCell.Value = 0

n = n - 1

For a = 1 To n
Sheets(a).Select
ActiveCell(r, c).Select
ActiveCell.Value = ActiveCell.Value + ActiveCell(r, c).Value
Next a

End Function

Merci de m'apporter votre aide.