Combinar dos hojas en una sola

30/09/2007 - 16:23 por GRIEGO59 | Informe spam
Hola!
Tengo una Hoja FACTURADEVENTAS con los siguientes elementos:

Rango B4:B18, muestra los seriales de los productos vendidos. Es un serial
único para cada producto y pueden venderse desde uno hasta quince productos
en una sola factura de venta, dependiendo del estado de ánimo del cliente.

Rango D4:D18, muestra el precio de venta final de cada serial. Este precio
de venta final es distinto del precio de venta presupuestado, puede ser mayor
o menor según convenga.

Sería genial que al presionar el botón GUARDAR, el precio final de cada
serial se guarde en la hoja COMPRAS en la columna "I" en función del Serial
de ese producto de la columna "A".

El botón GUARDAR está asociado a un código fenomenal que me facilitó Hector
en este foro, que guarda en la hoja COMPRAS otros datos de FACTURADEVENTAS,
como son Nº de factura de ventas y fecha de ventas, en funcíon también del Nº
de serial vendido. La diferencia es que estos dos datos son iguales para todo
el rango de seriales vendidos, mientras que el precio de venta final, es
diferente para cada serial vendido. Adicionalmente, el código borra los datos
de FACTURADEVENTAS después de guardar.

Por las dudas copio el código asociado a el botón guardar:

Sub Macro5()
'
' Macro5 Macro
' Macro grabada el 13/09/2007 por GRIEGO59
'

Dim Fila As Byte: Application.ScreenUpdating = False
With Worksheets("facturadeventas")
For Fila = 4 To Application.CountA(.Range("b4:b18")) + 3
Worksheets("compras").Range("a:a") _
.Cells.Find(.Range("b" & Fila), Range("a1"), xlValues, xlWhole).Offset(, 6) _
.Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
Next
.Range("a2,e2,b4:b18,h4:h18").ClearContents
End With
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/10/2007 - 06:57 | Informe spam
hola, Darío !

[segun parece] al codigo que estas usando solo necesitas modificarle una linea para los dos nuevos datos...
a) aumentar las columnas del *.Resize* de 2 a 3
b) agregar el dato para la columna adicionada al final de los elementos en el *Array*

o sea, dentro del bloque con la instruccion: -> Worksheets("compras").Range("a:a") _
y ANTES de la linea con la instruccion: -> Next

modifica:
de: -> .Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
a: -> .Resize(, 3) = Array(.Range("b2").Value, .Range("a2").Value, .Range("d" & Fila).Value)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Tengo una Hoja FACTURADEVENTAS con los siguientes elementos:
Rango B4:B18, muestra los seriales de los productos vendidos. Es un serial unico para cada producto
y pueden venderse desde uno hasta quince productos en una sola factura de venta, dependiendo del estado de animo del cliente.
Rango D4:D18, muestra el precio de venta final de cada serial.
Este precio de venta final es distinto del precio de venta presupuestado puede ser mayor o menor segun convenga.
Seria genial que al presionar el boton GUARDAR, el precio final de cada serial se guarde en la hoja COMPRAS
en la columna "I" en funcion del Serial de ese producto de la columna "A".
El boton GUARDAR esta asociado a un codigo... que guarda en la hoja COMPRAS otros datos de FACTURADEVENTAS
como son Nº de factura de ventas y fecha de ventas, en funcion tambien del Nº de serial vendido.
La diferencia es que estos dos datos son iguales para todo el rango de seriales vendidos, mientras que el precio de venta final
es diferente para cada serial vendido. Adicionalmente, el codigo borra los datos de FACTURADEVENTAS despues de guardar.
Por las dudas copio el codigo asociado a el boton guardar:

Sub Macro5()
Dim Fila As Byte: Application.ScreenUpdating = False
With Worksheets("facturadeventas")
For Fila = 4 To Application.CountA(.Range("b4:b18")) + 3
Worksheets("compras").Range("a:a") _
.Cells.Find(.Range("b" & Fila), Range("a1"), xlValues, xlWhole).Offset(, 6) _
.Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
Next
.Range("a2,e2,b4:b18,h4:h18").ClearContents
End With
End Sub
Respuesta Responder a este mensaje
#2 GRIEGO59
02/10/2007 - 18:32 | Informe spam
Gracias por tu respuesta Hector!
Voy a probar y te cuento. No tengo internet desde el domingo por lo que mis
respuestas serán mas lentas : (

Saludos,
Darío.

"Héctor Miguel" escribió:

hola, Darío !

[segun parece] al codigo que estas usando solo necesitas modificarle una linea para los dos nuevos datos...
a) aumentar las columnas del *.Resize* de 2 a 3
b) agregar el dato para la columna adicionada al final de los elementos en el *Array*

o sea, dentro del bloque con la instruccion: -> Worksheets("compras").Range("a:a") _
y ANTES de la linea con la instruccion: -> Next

modifica:
de: -> .Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
a: -> .Resize(, 3) = Array(.Range("b2").Value, .Range("a2").Value, .Range("d" & Fila).Value)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#3 GRIEGO59
03/10/2007 - 03:30 | Informe spam
Gracias Hector, Espectacular!!!

"Héctor Miguel" escribió:

hola, Darío !

[segun parece] al codigo que estas usando solo necesitas modificarle una linea para los dos nuevos datos...
a) aumentar las columnas del *.Resize* de 2 a 3
b) agregar el dato para la columna adicionada al final de los elementos en el *Array*

o sea, dentro del bloque con la instruccion: -> Worksheets("compras").Range("a:a") _
y ANTES de la linea con la instruccion: -> Next

modifica:
de: -> .Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
a: -> .Resize(, 3) = Array(.Range("b2").Value, .Range("a2").Value, .Range("d" & Fila).Value)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida