copiar de una hoja y pegarlo en otra con macro

16/03/2006 - 15:12 por KM**VE | Informe spam
hola amigos, tengo una hoja de excel de una lista de productos, tiene los
siguente campos,


Hoja1

A B C D E
F J
1 Nombre: Jose perez
2Direccion: miami
3Telf: 305-6294521
4 Pedi. Cod. Nombre Cant Precio Costo
Total
5 10 101 Art1 200 5 4
800.00
6 102 Art2 350 10 6
2,100.00
7 100 103 Art3 650 25 20
13,000.00
8 200 104 Art4 1000 45 36
36,000.00
9 105 Art5 80 1.5
0.80 64.00
10 Pirsa 1380 Total
costo, 51,964.00
-
es posible alguen que hacer esto, en la columna (A) es colocar la cantidad
que uno queres y segun la cantidad colocada se copian por orden en la nueva
hoja segun el nombre de (B1)pedido, tener un boton para que se genera la
nueva hoja y limpia la columna (A) y si es posible que se resta la cantidad
y que recalcula el costo total de la (hoja1) seguin cada pedido.


Hoja2 Jose perez

A B C D E
1 Nombre: Jose
2Direccion: miami
3Telf: 305-6294521
4 Pedi. Cod. Nombre Precio Total
5 10 101 Art1 5 50.00
6 100 103 Art3 25 250.00
7 200 104 Art4 45 900.00
8 Total pieza 310 Total 1,200.00
9
-



Gracias
KM**VE
 

Leer las respuestas

#1 klomkbock
17/03/2006 - 04:27 | Informe spam
Hola KM**VE

Mira a ver si te vale este codigo, que seguramente sera muy mejorable.
Prueba con una copia pues no soy un experto. No se si te he entendido
bien. Doy por hecho que en la hoja1 tienes la lista y lo que quieres es
pasar el pedido que te hacen a la hoja2 con el precio de venta y que en la
hoja1 el total lo sacas multiplicando cantidad por costo mediante formula.
Esta Hecho para el rango que expones, pero como supongo que seran
bastantes mas registros, puedes cambiar en donde van los comentarios ('
seguido de texto) los rangos por unos mas amplios, o por una sentencia que
busque la ultima fila con datos.

Espero que te valga.
Un saludo y hasta pronto.


Sub HojaPedido()
Dim Celda As Range, i As Integer
With ActiveWorkbook.Worksheets("Hoja2")
ActiveWorkbook.Worksheets("Hoja1").Range("a1:c3") _
.Copy Destination:=.Range("a1:c3")
.Range("a4:e4") = Array("Pedi", "Cod", "Nombre", "Precio", "Total")
i = 4
Application.ScreenUpdating = False
For Each Celda In ActiveWorkbook.Worksheets("Hoja1") _
.Range("a5:a9") 'puedes poner el rango que te convenga
If Celda <> 0 Then
Range(Celda, Celda.Offset(0, 2)).Copy Destination:= _
.Range(Range("a1").Offset(i, 0).Address, Range("c1") _
.Offset(i, 0).Address)
Celda.Offset(0, 4).Copy Destination:= _
.Range("d1").Offset(i, 0)
.Range("e1").Offset(i, 0) = _
Celda.Offset(0, 4) * Celda
i = i + 1
End If
Celda.Offset(0, 3) = Celda.Offset(0, 3) - Celda
Celda.ClearContents
Next Celda
' pudes cambiar "g50" por la celda que te convenga
.Range("a5", .Range("g50").End(xlDown).Address).Sort (.Range("a5"))
End With
End Sub

Preguntas similares