Sub cep_max()
Dim McType As Range, McGeo As Range, McAlt As Range
Dim McSurf As Range, McGes As Range
Dim Mt As Single, Mo As Single, Ma As Single
Dim Ms As Single, Mg As Single
Dim Tblo()
Set McType = Range("A13", [A65000].End(xlUp))
Set McGeo = Range("B13", [B65000].End(xlUp))
Set McAlt = Range("C13", [C65000].End(xlUp))
Set McSurf = Range("D13", [D65000].End(xlUp))
Set McGes = Range("E13", [E65000].End(xlUp))
i = 0
For Mt = 1 To McType.Count
For Mo = 1 To McGeo.Count
For Ma = 1 To McAlt.Count
For Ms = 1 To McSurf.Count
For Mg = 1 To McGes.Count
ReDim Preserve Tblo(0 To i)
x = 50 * McType(Mt) * (McGeo(Mo) + McAlt(Ma) + McSurf(Ms) + McGes(Mg))
Tblo(i) = Array(McType(Mt).Value, McGeo(Mo).Value, McAlt(Ma).Value, McSurf(Ms).Value, McGes(Mg).Value, x)
i = i + 1
Next Mg
Next Ms
Next Ma
Next Mo
Next Mt
Range("G65000").End(xlUp)(2).Resize(UBound(Tblo) + 1, 6).Value = Application.Transpose(Application.Transpose(Tblo))
End Sub