Bonjour,
Sub conso()
Dim conso As Object, cle As Variant
NM = Sheets("Nomenclature").Range("A1").CurrentRegion.Value
OF = Sheets("Ordre de fabrication").Range("A1").CurrentRegion.Value
Set conso = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(NM)
For j = 2 To UBound(OF)
If NM(i, 1) = OF(j, 1) Then conso(OF(j, 3) * 1 & "|" & NM(i, 3)) = conso(OF(j, 3) * 1 & "|" & NM(i, 3)) + OF(j, 2) * NM(i, 4)
Next
Next
With Sheets("Consommation")
.Range("A1").CurrentRegion.Offset(1, 0).ClearContents
i = 1
For Each cle In conso.keys
i = i + 1
.Cells(i, 1) = Split(cle, "|")(0)
.Cells(i, 2) = Split(cle, "|")(1)
.Cells(i, 3) = conso(cle)
Next
End With
ActiveWorkbook.Worksheets("Consommation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Consommation").Sort.SortFields.Add Key:=Range("A2:A" & i), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Consommation").Sort.SortFields.Add Key:=Range("B2:B" & i), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Consommation").Sort
.SetRange Range("A1:C" & i)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Bonjour Jean-Eric
j'étais en train de travailler sur une solution classique VBA