Necesito ayuda para actualizar un código

Valentin Baeza

New Member
Joined
Apr 25, 2018
Messages
7
De antemano gracias por acudir a mi llamada de ayuda.
Tengo el siguiente código en la hoja8 de un libro de Excel en la que tengo una base de datos de artículos. En la columna J de esta hoja tengo el dato “Precio de compra del artículo”. Lo que realiza la macro que adjunto es, si se modifica el precio de compra de cualquier artículo en la columna J, lo actualiza en todas las hojas de escandallos en las que ese artículo participa. Estas hojas de escandallos se denominan todas iniciando con “E.” seguido del número de escandallo. Luego realiza unos cálculos y los actualiza en otra hoja denominada “ART_VTA”
Lo que necesito es adaptar la macro para que se ejecute y actúe sobre todos los artículos que forman parte de esa base de datos (HOJA8, que es donde está ubicado el código) y no solamente en aquel artículo en el que haya realizado una modificación en el campo de la columna J (precio de compra). Quisiera tener la posibilidad de que se ejecute para todos los artículos que componen el art_comp (hoja8), independientemente de que el precio haya sido modificado o no, y recalcule en art_vta (como ya hace) el consumo, margen bruto, precio teorico y coste unitario.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'
    'Actualiza precio de compra en los escandallos cuando se modifica la columna J
   
    If Not Intersect(Target, Columns("J")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Row = 1 Then Exit Sub
        res = MsgBox("Ha modifica un precio de compra, desea modificar los escandallos", _
            vbQuestion + vbYesNo, "MODIFICAR PRECIO DE COMPRA")
        If res = vbNo Then Exit Sub
        '
        Application.ScreenUpdating = False
        Application.StatusBar = False
        'descripcion articulo en factura
        des_fra = Cells(Target.Row, "E")
        pre_uni = Cells(Target.Row, "H")
        For Each h In Sheets
            Application.StatusBar = "Revisando hoja : " & h.Index & " de : " & Sheets.Count
            If Left(h.Name, 2) = "E." Then
                Set b = h.Columns("A").Find(des_fra, lookat:=xlWhole)
                If Not b Is Nothing Then
                    fila = b.Row
                    'modifica precio unitario
                    h.Cells(fila, "E") = pre_uni
                    'modifica coste total
                    h.Cells(fila, "F") = pre_uni * h.Cells(fila, "B")
                    'Coste total x pax
                    h.Cells(fila, "G") = h.Cells(fila, "F") / h.Range("B5")    'raciones
                    '
                    '% coste total x pasx
                    u = h.Range("A" & Rows.Count).End(xlUp).Row
                    With h.Range("H7:H" & u)
                        .FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-1]/R7C18)"
                        .Value = .Value
                    End With
                    'Actualizar Art_vta
                    art_vta = h.Range("A3").Value
                    Set hvta = Sheets("ART_VTA.")
                    Set c = hvta.Columns("A").Find(art_vta, lookat:=xlWhole)
                    If Not c Is Nothing Then
                        '
                        hvta.Cells(c.Row, "F") = h.Range("N12") 'consumo
                        hvta.Cells(c.Row, "G") = h.Range("N13") 'margen bruto
                        hvta.Cells(c.Row, "H") = h.Range("M9") 'coste unit
                        hvta.Cells(c.Row, "I") = h.Range("M11") 'precio teorico
                    End If
                End If
            End If
        Next
    End If
 
Last edited by a moderator:

Excel Facts

Ambidextrous Undo
Undo last command with Ctrl+Z or Alt+Backspace. If you use the Undo icon in the QAT, open the drop-down arrow to undo up to 100 steps.
Hola Valentin. Quiero entender mejor lo que estás pidiendo. Veo dos maneras de adaptar la macro.

1) Cuando el precio de uno de los artículos se cambie, que todos los articulos (incluyendo el que se cambió y los demás) se recalculasen
2) Que solo el artículo que haya cambiado se recalculase, pero que se ejecute cuando haya sido modificado el precio u otro dato del artículo (otro dato en otra columna que no sea J)

¿Es una de estos o lo he entendido mal?
 
Upvote 0

Forum statistics

Threads
1,224,823
Messages
6,181,184
Members
453,020
Latest member
Mohamed Magdi Tawfiq Emam

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top