Synthèse de tableau

Résolu/Fermé
SpcCwb Messages postés 65 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 26 novembre 2020 - 21 mai 2019 à 12:23
SpcCwb Messages postés 65 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 26 novembre 2020 - 21 mai 2019 à 18:12
Bonjour CCM,

Voici mon fichier exemple avec ce que j'aimerai obtenir par macro. https://www.cjoint.com/c/IEvkqYhEoXI

Je cherche à faire une synthèse de plusieurs intitulés présents dans un tableau (mon exemple correspond à des hors d'oeuvre).

Le résultat doit être retanscrit dans un plus petit tableau, et lorsqu'il y a un hors d'oeuvre qui apparaît plusieurs fois, le nombre de portions doit s'ajouter au nombre de portions précédemment calculé.

Ce que j'aimerai également c'est que l'ordre de remplissage du tableau récap se fasse comme cela:
A12 D12 G12 A13 D13 G13 A14 D14 G14. De cette façon je pourrai masquer les lignes qui ne servent pas.

Merci de l'aide que vous pourriez m'apporter.

2 réponses

tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
Modifié le 21 mai 2019 à 16:14
Bonjour,

Pour les carottes râpées, cette formule en I12 :
=SOMMEPROD(($B$2:$B$9=G12)*($C$2:$C$9))+SOMMEPROD(($E$2:$E$9=G12)*($F$2:$F$9))+SOMMEPROD(($H$2:$H$9=G12)*($I$2:$I$9))
0
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
21 mai 2019 à 16:15
Fonctionne en copier-coller pour C12, C13, F12, F13...
0
SpcCwb Messages postés 65 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 26 novembre 2020 1
21 mai 2019 à 18:09
Bonjour tuxboy, ta formule fonctionne très bien.

Dans le même temps à force d'essais j'ai trouvé ce que je voulais faire via une macro, de manière à automatisé le masquage des lignes qui ne me servent pas. Je poste ma solution plus bas.

Merci de t'être penché sur mon problème.

Bonne soirée
0
SpcCwb Messages postés 65 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 26 novembre 2020 1
21 mai 2019 à 18:12
J'ai finalement trouvé ce que je voulais, voici le code que j'ai écrit (il est sans doute loin d'être parfait mais il a le mérite de fonctionner ^^ )


Sub entrees_d()
Dim c As Range
Dim d As Range

Set recapE = Range("B95,E95,H95,B96,E96,H96,B97,E97,H97")
Set listeE = Range("C85:C92,F85:F92,I85:I92")

Application.ScreenUpdating = False
Rows(96).Hidden = False
Rows(97).Hidden = False

For Each d In recapE
d.Value = ""
d.Offset(, 2).Value = ""
Next d

For Each c In listeE
For Each d In recapE
If d.Value = "" Then d.Value = c.Value: d.Offset(, 2).Value = c.Offset(, 1).Value: Exit For
If d.Value = c.Value Then d.Offset(, 2).Value = d.Offset(, 2).Value + c.Offset(, 1).Value: Exit For
Next d
Next c

If Range("B96").Value = "" Then Rows(96).Hidden = True
If Range("B97").Value = "" Then Rows(97).Hidden = True
Application.ScreenUpdating = True
End Sub
0