Macro para buscar por Codigo o Descripcion

29/08/2012 - 23:37 por dragun | Informe spam
Buenas tardes

Me podrian ayudar para saber como asignar un macro a un conjunto de celdas , esto es para un archivo de almacen: lo que necesito es que al dar salida de un producto me permita hacerlo ya sea digitando el codigo del producto y que me arroje descripcion y precio, o escogiendo el producto y que me arroje el codigo y precio, ya lo intente con formula buscarv pero me crea una formula circular y es un poco engorrosa trabajar asi ya que si escogo el codigo funciona pero si escogo por producto me arroja un solo codigo(los productos los tengo en lista de Validacion. Espero me puedan ayudar.
 

Leer las respuestas

#1 Juan Español
30/08/2012 - 19:44 | Informe spam
Hola dragun:
El problema que plantes es viejo y yo nunca he encontrado (ni mía, ni en
internet) una solución brillante en excel.
No es así en Access que tiene solución sencilla.
Pero bueno aquí estamos en Excel y un código en la hoja donde "facturas",
como el que pongo al final, te funcionará.
En la primera Columna va el código
En la segunda Columna va la descripción
En la tercera va el precio (yo no lo he puesto por código, para no hacerlo
más largo) lo puedes poner por fórmula mediante BUSCARV
En la cuarta va la cantidad (me imagino que la pones tecleando)

El rango de la tabla de artículos en este código, está en
Worksheets(2).Range("A2:C20")
Has de tener cuidado y poner alguna protección para no repetir ni CODIGO ni
DESCRIPCIÓN en los artículos, pues te daría confusión en los precios.
(Sino sabes como hacerlo, pregunta)

Saludos.-



Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Then Exit Sub
Dim RG_ART
If Target.Column = 1 Then ' en caso de poner CODIGO
Dim c_art As String
RG_ART = Worksheets(2).Range("A2:C20")
If Target.Value = Empty Then
Target.Offset(0, 1) = Empty: Exit Sub
Else
c_art = Target.Value
Target.Offset(0, 1) = _
Application.WorksheetFunction.VLookup(c_art, RG_ART, 2, False)
Target.Offset(0, 3).Select ' te posiciona para poner la cantidad
End If
Else 'en caso de PONER descripción
Dim d_art As String
d_art = Target.Value
If d_art = Empty Then Exit Sub
If Target.Offset(0, -1) = Empty Then Target.Offset(0, -1) = _
Worksheets(2).Columns(2).Find(d_art).Offset(0, -1).Value
End If
End Sub


"dragun" escribió en el mensaje de
noticias news:
Buenas tardes

Me podrian ayudar para saber como asignar un macro a un conjunto de celdas
,
esto es para un archivo de almacen: lo que necesito es que al dar salida
de un
producto me permita hacerlo ya sea digitando el codigo del producto y que
me
arroje descripcion y precio, o escogiendo el producto y que me arroje el
codigo
y precio, ya lo intente con formula buscarv pero me crea una formula
circular y
es un poco engorrosa trabajar asi ya que si escogo el codigo funciona pero
si
escogo por producto me arroja un solo codigo(los productos los tengo en
lista
de
Validacion. Espero me puedan ayudar.

Preguntas similares