¿Copiar y pegar con un solo click?

Buenos días gente, espero que me ayuden con mi pequeño problema y es el siguiente:
Tengo un factura en la "hoja 1" y una lista de producto en la "hoja 2" (más o menos alrededor de 200 productos), lo que quiero hacer es buscar el producto (manualmente) y una vez encontrado clickear sobre el mismo y que se pegue en la factura, así con cada producto.
Espero haberme expresado bien y muchas gracias,salu2=)

1 Respuesta

Respuesta
1
Entrá al Editor de macros (con Alt y F11 juntas), seleccioná con doble clic el objeto HOJA que corresponda a tu hoja de productos, y en la ventana escribí esta rutina:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Hoja1").Range("B5") = Target.Value
End Sub
Ajustá el nombre de la hoja y la celda donde debe mostrarse el producto. A esto podrías agregarle una línea, antes del End Sub, que te lleve nuevamente a la hoja1:
Sheets("Hoja1").select
Saludos
Elsa
Tus mejores opciones en manuales Excel desde:
http://es.geocities.com/lacibelesdepunilla/manuales
Muchas gracias, ¿Elsa por responder rápidamente mi pregunta pero el problema que tengo ahora es que no logro copiar el producto que elijo porque?( No entiendo mucho del lenguaje de Visual Basic).
espero tu respuesta,Maxi=)
P.D: si logro sacarlo te aviso. Saludos
Seguramente la rutina no está copiada en el lugar adecuado.
Desde el editor, verás a tu izquierda un panel con los objetos del proyecto: Hoja1, Hoja2 (con los nombres que tienen tus hojas), ThisWorkbook (o Este libro), etc.
Seleccioná con doble clic la hoja donde tenés tus productos y allí copiá la rutina.
Lo ideal sería que controle un rango para que no se ejecute al seleccionar cualquier celda de esta hoja. Entonces te debiera quedar así, supondré que los productos están en col B
Private Sub.....
if target.column = 2 then
Sheets(.....
end if
End sub
PD) también verificá que estén las macros habilitadas
Saludos. Si no lo resolvés podes pedirme el ejemplo a mi correo
Ya lo pude hacer, sos una experta en esto, pero me falta una cosa y es la siguiente: que si elijo otro producto este se copie en otra celda y que no me borre la que estaba antes la otra así sucesivamente hasta que se termine la factura.
Ej: clickeo un producto y me aparece en una celda (esto ya lo pude hacer),(lo que no se hacer es esto)cliqueo otro producto y me aparece debajo de la celda del otro así hasta el final de la factura
Se agradece mucho tu ayuda y espero tu respuesta.=)
Ahhhh..., qué forma tan particular de llenar una factura...
Podemos incluir una instrucción que evalúe cuál es la última fila con datos (en la col de productos de la hoja1) para ir colocando a continuación.
Pero seguramente tendrás 1 posición inicial, por ej. que la lista de productos se coloquen a partir de la fila 9. Entonces tu rutina queda así:
Private Sub.....
if target.column = 2 then
fila = sheets("Hoja1").Range("A65536").End(xlup).Row + 1
if fila < 9 then fila = 9
Sheets("Hoja1").cells(fila,1) = Target.value
end if
End sub
La macro evalúa tu selección en la col B y copia ese valor en la col A de la hoja 1 a partir de la fila 9 . Esa fila no debe tener otros datos más abajo del rango donde se ubicarán los productos (ni totales, ni textos, ...)
Creo que esto resuelve tu problema, pero si tus hojas tienen un diseño que no se ajusta a esto, deberás enviármela a mi correo
Bueno elsa, hice lo que dijiste pero no funciona nada (lo intente varias veces) y no me salto ningún error ni nada.
Así quedo la macro que hice: (dentro de la hoja de producto)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
if target.column = 2 then 
fila = sheets("factura").Range("A65536").End(xlup).Row + 1
if fila < 19 then fila = 19
Sheets("factura").cells(fila,1) = Target.value 
Sheets("Hoja1").select
end if
End sub
P.D: Lo unico que anda es hasta if target.column = 2 then q me anda al pelo y el Sheets("Hoja1").select
Y gracias por tu ayuda.
Estos son tus 2 problemas:
1- En mi 2da respuesta te indiqué que suponía para el ejemplo que la lista de productos está en col B, dejando esta instrucción:
if target.column = 2
Como tus datos están en A solo necesitas cambiar el valor a 1.
2-En mi última respuesta te indiqué que en Hoja 1 la col A no debiera tener otros datos más abajo (veo que aparece un texto de Industria...).
Ya ajusté la rutina sobre tu libro y esto quedó:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'como tus datos en hoja productos están en col A se controla la col 1
If Target.Column = 1 Then    
'como la lista de prod solo puede ir hasta fila 50 (y debajo hay otros datos) busca la fila libre desde la 50 hacia arriba con tope en 19
fila = Sheets("factura").Range("A50").End(xlUp).Row + 1
If fila < 19 Then fila = 19
Sheets("factura").Cells(fila, 1) = Target.Value
'si no querés volver a la hoja Factura borrá la línea siguiente
Sheets("factura").Select
End If
End Sub
Te agradezco la ayuda que me diste, me sirvió mucho. Sos una genia en el excel, te felicito y seguí así (10 puntos lo tuyo)
P.D: Nos vemos hasta las proxima pregunta =)
Maxi=)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas