Synthèse de tableau

Résolu
SpcCwb Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
SpcCwb Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

2 réponses

tuxboy Messages postés 995 Date d'inscription   Statut Membre Dernière intervention   190
 
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 995 Date d'inscription   Statut Membre Dernière intervention   190
 
Fonctionne en copier-coller pour C12, C13, F12, F13...
0
SpcCwb Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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