OVH Cloud OVH Cloud

Somme en VBA

3 réponses
Avatar
Tof
Bonjour,

J'ai dans un Classeur Excel une feuille nommée "Détail Semaine" avec en
colonne les numéro de semaine et en ligne des noms.
J'ai une autre feuille qui s'intitule "Somme Période", dont l'objectif est
de faire la somme pour chacun des noms en fonction d'une plage de semaine
('semaine début' et 'semaine fin') qui est sélectionnée via une zone de liste.
Je n'arrive pas à trouver de solution pour qu'Excel me fasse bien la somme,
pour chacun des noms, des valeurs de la plage sélectionnée.
Je pense résoudre ce pb via VBA mais je sèche...

Merci d'avance pour vos éclaircissements

Christophe

3 réponses

Avatar
SL
Bonjour

Sans VBA :
en supposant que la ligne 1 de "Détail Semaine" contienne les n° de semaine
(B1:BA1 plage nommée 'semaines') que la colonne A contienne les noms (A2:Axx
plage nommée 'noms') et que les données sont en B2:BAxx (plage nommée
'données') - BA pour 52 semaines, BB si 53.

en supposant toujours que la colonne A de "Somme Période" contienne les noms
(peu importe l'ordre) et les plages nommées 'semaine_début' et 'semaine_fin'
les bornes

en B2 de "Somme Période"
=SOMMEPROD(données*(A2=noms)*(semaines>=semaine_début)*(semaines<=semaine_fin))
donne la somme attendue.

Stéphane




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

Bonjour,

J'ai dans un Classeur Excel une feuille nommée "Détail Semaine" avec en
colonne les numéro de semaine et en ligne des noms.
J'ai une autre feuille qui s'intitule "Somme Période", dont l'objectif est
de faire la somme pour chacun des noms en fonction d'une plage de semaine
('semaine début' et 'semaine fin') qui est sélectionnée via une zone de
liste.
Je n'arrive pas à trouver de solution pour qu'Excel me fasse bien la
somme,
pour chacun des noms, des valeurs de la plage sélectionnée.
Je pense résoudre ce pb via VBA mais je sèche...

Merci d'avance pour vos éclaircissements

Christophe



Avatar
Tof
Excellent !
Je n'ai pas tout à fait saisi la formule mais ça marche !! :-)
Merci bcp


Bonjour

Sans VBA :
en supposant que la ligne 1 de "Détail Semaine" contienne les n° de semaine
(B1:BA1 plage nommée 'semaines') que la colonne A contienne les noms (A2:Axx
plage nommée 'noms') et que les données sont en B2:BAxx (plage nommée
'données') - BA pour 52 semaines, BB si 53.

en supposant toujours que la colonne A de "Somme Période" contienne les noms
(peu importe l'ordre) et les plages nommées 'semaine_début' et 'semaine_fin'
les bornes

en B2 de "Somme Période"
=SOMMEPROD(données*(A2=noms)*(semaines>=semaine_début)*(semaines<=semaine_fin))
donne la somme attendue.

Stéphane




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

Bonjour,

J'ai dans un Classeur Excel une feuille nommée "Détail Semaine" avec en
colonne les numéro de semaine et en ligne des noms.
J'ai une autre feuille qui s'intitule "Somme Période", dont l'objectif est
de faire la somme pour chacun des noms en fonction d'une plage de semaine
('semaine début' et 'semaine fin') qui est sélectionnée via une zone de
liste.
Je n'arrive pas à trouver de solution pour qu'Excel me fasse bien la
somme,
pour chacun des noms, des valeurs de la plage sélectionnée.
Je pense résoudre ce pb via VBA mais je sèche...

Merci d'avance pour vos éclaircissements

Christophe








Avatar
SL
Petite explication que j'espère clair
La fonction SOMMEPROD fait la somme de produit.
En gros :
pour chaque cellule de la plage données, Excel compare la valeur A2 (nom
cherché) avec le nom sur la même ligne que la cellule étudiée. Si le nom est
identique (A2=noms) renvera 1 et 0 sinon. Idem pour la comparaison du n° de
semaine (s'il est supérieur à la semaine_début : 1, 0 sinon) et pour la
semaine_fin.

au total : données * (0 ou 1) * (0 ou 1) * (0 ou 1)
si les trois conditions sont remplies (le nom, >= semaine_début et <=
semaine_fin) alors 1*1*1 sinon il y aura au moins un 0 donc valeur = 0
la somme de tout ça est ce que tu cherches.

Stéphane

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

Excellent !
Je n'ai pas tout à fait saisi la formule mais ça marche !! :-)
Merci bcp


Bonjour

Sans VBA :
en supposant que la ligne 1 de "Détail Semaine" contienne les n° de
semaine
(B1:BA1 plage nommée 'semaines') que la colonne A contienne les noms
(A2:Axx
plage nommée 'noms') et que les données sont en B2:BAxx (plage nommée
'données') - BA pour 52 semaines, BB si 53.

en supposant toujours que la colonne A de "Somme Période" contienne les
noms
(peu importe l'ordre) et les plages nommées 'semaine_début' et
'semaine_fin'
les bornes

en B2 de "Somme Période"
=SOMMEPROD(données*(A2=noms)*(semaines>=semaine_début)*(semaines<=semaine_fin))
donne la somme attendue.

Stéphane




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

Bonjour,

J'ai dans un Classeur Excel une feuille nommée "Détail Semaine" avec en
colonne les numéro de semaine et en ligne des noms.
J'ai une autre feuille qui s'intitule "Somme Période", dont l'objectif
est
de faire la somme pour chacun des noms en fonction d'une plage de
semaine
('semaine début' et 'semaine fin') qui est sélectionnée via une zone de
liste.
Je n'arrive pas à trouver de solution pour qu'Excel me fasse bien la
somme,
pour chacun des noms, des valeurs de la plage sélectionnée.
Je pense résoudre ce pb via VBA mais je sèche...

Merci d'avance pour vos éclaircissements

Christophe