Problème de Sommeprod

Pi_r_314

XLDnaute Nouveau
Bonjour à tous,

Pour un exercice donné en cours, je cherche à calculer le coût humain de production d'un produit dans une seule cellule. Quand une seule personne travaillait à la production de ce produit, la formule SOMMEPROD fonctionnait très bien. J'ai maintenant plusieurs techniciens payés à un coût horaire différent et travaillant plus ou moins longtemps chaques jours à l'élaboration du produit.

Sur mon tableau et pour le produit SPE1 ça donnerait la somme des B (tps de travail) * L (coût horaire) en fonction de C (intiales).

Je bloque...

Merci d'avance pour votre aide ^^
 

Pièces jointes

  • sommeprod.xlsx
    11.9 KB · Affichages: 50
  • sommeprod.xlsx
    11.9 KB · Affichages: 55
  • sommeprod.xlsx
    11.9 KB · Affichages: 54

Jocelyn

XLDnaute Barbatruc
Re : Problème de Sommeprod

Bonjour le Forum,
Bonjour Pi_r_314, Kjin,

comme le dit Kjin avec une colonne sup exemple dans le fichier colonne D c'est jouable sans soucis

Bonne année

Cordialement
 

Pièces jointes

  • sommeprod-1.xls
    11.5 KB · Affichages: 43

Pi_r_314

XLDnaute Nouveau
Re : Problème de Sommeprod

J'ai fait une version VBA, un peu lourde mais qui fonctionne:

Option Explicit
Option Compare Text

Sub test()

Dim c As Range
Dim ci As Range

For Each c In Range("IN_1")
For Each ci In Range("IN")
If c.Value = ci.Value Then
Range("P5") = Range("P5") + ci.Offset(0, 1).Value * c.Offset(0, -1).Value
End If
Next ci
Next c

For Each c In Range("IN_2")
For Each ci In Range("IN")
If c.Value = ci.Value Then
Range("P6") = Range("P6") + ci.Offset(0, 1).Value * c.Offset(0, -1).Value
End If
Next ci
Next c

For Each c In Range("IN_3")
For Each ci In Range("IN")
If c.Value = ci.Value Then
Range("P7") = Range("P7") + ci.Offset(0, 1).Value * c.Offset(0, -1).Value
End If
Next ci
Next c

For Each c In Range("IN_4")
For Each ci In Range("IN")
If c.Value = ci.Value Then
Range("P8") = Range("P8") + ci.Offset(0, 1).Value * c.Offset(0, -1).Value
End If
Next ci
Next c

End Sub
 

hbenalia

XLDnaute Occasionnel
Re : Problème de Sommeprod

Bonjour à tous,

Le code de Pi_r_314 peut être simplifié en le code:
Code:
Sub test()
Dim c As Range, ci As Range, X As Integer
Application.ScreenUpdating = False
For X = 1 To 4
For Each c In Range("IN_" & X)
For Each ci In Range("IN")
If c.Value = ci.Value Then
Range("P" & X + 4) = Range("P" & X + 4) + ci.Offset(0, 1).Value * c.Offset(0, -1).Value
End If
Next ci
Next c
Next X
Application.ScreenUpdating = True
End Sub
Cordialement
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Problème de Sommeprod

Bonjour,
Avec une macro événementielle
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r1 As Range, rIN As Range, rTPS As Range, idSPE$, total#
If Target.Count > 1 Then Exit Sub
Set r1 = Range("B5:I35")
If Not Intersect(Target, r1) Is Nothing Then
    If Target.Column Mod 2 = 0 Then
        idSPE = Cells(3, Target.Column)
        Set rTPS = Intersect(Columns(Target.Column), r1)
        Set rIN = Intersect(Columns(Target.Column), r1).Offset(0, 1)
    Else
        idSPE = Cells(3, Target.Column - 1)
        Set rTPS = Intersect(Columns(Target.Column), r1).Offset(0, -1)
        Set rIN = Intersect(Columns(Target.Column), r1)
    End If
    For Each c In Range("IN")
        If c.Offset(0, 1) <> 0 Then
            If Application.CountIf(rIN, c) > 0 Then
                total = total + Application.SumIf(rIN, c, rTPS) * c.Offset(0, 1)
            End If
        End If
    Next
    Range(idSPE) = total
End If
End Sub
Le recalcul ne se fait que sur la colonne de l'idSPE pour éviter les traitements trop longs
J'ai également remanié les plages nommées
A+
kjin
 

Pièces jointes

  • pierre314.xls
    42 KB · Affichages: 34
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Problème de Sommeprod

Bonjour à tous

Pour le fun, j'ai essayé de trouver une solution avec une formule, sans colonne intermédiaire.

Conclusion : J'en ai une, mais vraiment pas très belle, car elle est à rallonge, et de plus il faut définir plein de noms AB, XY...

Venant moins sur le forum depuis quelques mois, j'ai déja oublié pas mal de possibilités. On se rouille vite...

Si quelqu'un a une idée. Ca doit bien exister, une formule plus concise, et copier-collable vers le bas si possible...

@ plus
 

Pièces jointes

  • sommeprod.xlsx
    13 KB · Affichages: 38
  • sommeprod.xlsx
    13 KB · Affichages: 38
  • sommeprod.xlsx
    13 KB · Affichages: 34

CISCO

XLDnaute Barbatruc
Re : Problème de Sommeprod

Rebonjour à tous

J'ai été cherché un peu d'antirouille...

Cf. en pièce jointe, en colonne O, une formule matricielle différente dans chaque cellule, et en colonne P, une formule matricielle pouvant être tirée vers le bas.

@ plus
 

Pièces jointes

  • sommeprod.xlsx
    13.2 KB · Affichages: 36
  • sommeprod.xlsx
    13.2 KB · Affichages: 39
  • sommeprod.xlsx
    13.2 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
312 884
Messages
2 093 245
Membres
105 658
dernier inscrit
Mario Richard