Macro para copiar fila de una base de datos

Hola Expertos, antes que nada ¡Una felicitación! A esta página me ha sido de gran utilidad los macros que he encontrado y adaptado a mis necesidades, ahora no me si me puedan ayudar con lo siguiente tengo tres dudas como quien dice necesito 3 macros ya que los utilizare de forma independiente.
La Primera es una macro que al momento de ingresar un ID en la celdad B10 del libro FACTURA me busque el ID en la Columna A del libro ALMACEN y si no existe este ID que me arroje un mensaje diciéndome "Dicho articulo no existe en Almacen".
La segunda que cuando ingrese el FOLIO en celda B10 del libro BUSCAR me busque en el libro HISTORIAL el folio en la columna A y seguidamente me copia la fila completa en el libro BUSCAR partir de la fila A15.
La tercera un macro que me sustituya una fila completa según el ID que valla a ALMACEN y me busque el ID que he modificado y me sustituya la fila completa que he modificado
De antemano Muchas Gracias por su ayuda

1 respuesta

Respuesta
1
Para el primero después de tener el valor en B10 ejecutarías un macro que te busque ese valor en la columna del libro almacen y te de el mensaje esto lo puedes hacer de esta forma:
Workbooks("FACTURA"). Activate
valor=range("B10").value
workbooks("ALMACEN").activate
for i=1 to (número de registros)
if range("a" & i).value=valor then
contador=contador+1
end if
next i
if contador =0 then
msgbox "Dicho articulo no existe en Almacen" 
end if
Para el segundo la forma de saber en que fila estas es con activecell. Row al saber la fila puedes copiarla y después pegarla donde necesites. Puedes hacer la bsuqueda con un for análogo al del primer problema.
EL tercero no lo entiendo muy bien pero creo que con los datos que te he dado lo podrías solucionar.
Espero te sea de ayuda
Me sale error de compilación y la verdad no conozco casi nada de macro no tengo conocimiento yo adapto los macros guiándome un poco con lo que he visto de macros en algunos trabajos de la escuela que realizábamos, pero nunca nos enseñaron a un nivel ni siquiera madio solamente nos enseñaron un poco a ahora que entre a la universidad, nos pidieron hacer un programa de facturación y nos dieron lo que necesita llevar, debemos investigar para hacer los macros y el que lo haga pues gana unos puntos extras dependiendo de como este el trabajo, ya tengo la mayoría pero hay donde no puedo y es cuando pido ayuda, en esta página vi muchos macros y los voy adaptando a mis necesidades pero como me explicas es avanzado para mi y respecto a la tercera es así. Yo realizo una venta cuando le doy en el botón registrar los datos de la factura me los copia al Historial registrándome folio, fecha, clientes, que me compraron, entre otros datos esto lo se hacer, utilizando el siguiente macro (también lo adapte solamente modificando los nombres de libros y rangos)
Sub GuardarHistorial()
Dim fila1 As Integer
fila1 = Sheets("HISTORIAL").Range("A10000").End(xlUp).Row + 1
Sheets("FACTURA").Select
Range("P13:EN13").Select
Selection.Copy
Sheets("HISTORIAL").Select
Range("A" & fila1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("FACTURA").Select
End Sub
El primer macro debe buscar el ID (ejemplo AQ - 150) que introduzca y si no existe dicho ID en almacen me arroja el mensaje de "Dicho Articulo no existe en Almacen)
El segundo macro es para llamar un folio determinado (ejemplo 150) que me copie la fila completa del libro HISTORIAL en un libro llamado BUSCAR en la linea numero 10 posteriormente con otra macro voy a copiar los resultados en determinadas celdas (esto lo hice con grabar macro)
Después el tercer macro lo que necesita hacer es buscar en el libro HISTORIAL la fila que tenga el folio 150 y reemplazarme la fila completa con los nuevos datos del registro modificado
espero que ahora si me haya explicado
de antemano muchas gracias
Prueba este código funciona para el primer problema:
Sub encontrar()
Workbooks("FACTURA").Activate
valor = Range("B10").Value
Workbooks("ALMACEN").Activate
For i = 1 To 100
If Range("a" & i).Value = valor Then
contador = contador + 1
End If
Next i
If contador = 0 Then
MsgBox "Dicho articulo no existe en Almacen"
Else
MsgBox "Dicho articulo sí existe en Almacen"
End If
End Sub
Cuéntame como te fue y seguimos avanzando.
Me sale se ha producido un error '9' en tiempo de ejecución le doy depurar y resalta en amarillo
Workbooks("FACTURA").Activate
¿En qué libro estás pegando el código?. Debes tener los libros Factura y Almacen abierto.
Salio bien el problema es que te dije que son libros y no son libros, son hojas pero al modificar el macro me corrió bien
Bien. Necesitas ayuda con el segundo.
?
Si me pueden ayudar se los agradecería mucho,
Para el segundo podes usar un código parecido añadiendo la parte de ubicar y copiar la fila. Busca el item, identifica en que fila está, la copia, va a la hoja "buscar" y la pega en la fila 10.
Sub encontrar()
Workbooks("FACTURA").Activate
valor = Range("B10").Value
Workbooks("ALMACEN").Activate
For i = 1 To 100
If Range("a" & i).Value = valor Then
Range("a" & i).select
fila=activecell.row
Rows("" & fila &":" & fila).Select
Selection.Copy
Sheets("Buscar").Select
Rows("10:10").Select
ActiveSheet.Paste
End If
Next i
End Sub
Pruébalo y me comentas.
Funciono al 100% a la primera amigo en verdad eres un experto, espero ser algún día comu tu y ayudar también
Me podrías ayudar con el tercer y ultimo macro
¿Con qué tienes problemas exactamente?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas