Modificar una tabla desde otra hoja

Hola
Tengo un documento de excel con dos hojas. En la primera tengo una base de datos (un poco larga) y en la otra una ficha de cada fila de la base de datos (mediante fórmulas buscar.H), de manera que al seleccionar el id de la fila todo se rellena automático.
Lo que quiero conseguir es que pueda modificar en esa ficha y lo que cambie se grabe también en la base de datos. Que el excel me busque la fila correcta.
LLevo mucho tiempo buscando sin suerte...
Gracias por tu tiempo
Julio

1 Respuesta

Respuesta
1
Creo entender como es tu documento y lo que quieres hacer.
¡Con razón llevas tiempo buscando!
Hay una máxima que no se puede saltar: si tienes una celda para salida de datos (las BUSCAR) no puedes entrarlos en ellas o quitarás la fórmula.
Lo que tu quieres es exactamente lo que hace una base de datos del estilo Access, que te recomendaría que usaras. En esta base de datos puedes usar como tabla origen la de Excel por lo que no tendrías que introducir los datos de nuevo. Y luego diseñarías las fichas allí, ahora si podrías modificar los datos y buscarlos.
Ahora bien, si no quieres aprender a manejar una aplicación nueva. Se podría intentar una macro para simularla. Pero siempre tendrías que tener dos fichas (que serían iguales) una de entrada de datos y otra de salida.
¿Quieres intentarlo?
Manucas :)
Por favor! Es exactamente lo que quiero.El problema de Access es que no es flexible, ademas que mis compañeros de trabajo no saben ni que es.
A ver si me hechas una mano!
Una cosa, lo importante es que pueda modificar los datos. Tengo una macro que me añade una fila al final, pero no consigo una macro que me encuentre la fila correcta.
Gracias
;)
Bueno que no te he dicho como funcionaría!
Sería bueno añadir un botón a la Hoja3 que pusiera "Actualizar" y asociarle la macro que hemos creado.
Cuando quieras actualizar un dato, te vas a tu ficha (Hoja2) y pones el ID y lo busca. Creo que esto ya lo hacías antes.
Ahora pasamos a la Hoja3, allí ya nos aparece la ficha ahora vacía pero con el ID de la que queremos actualizar, rellena sólo el campo que quieres cambiar y dale a tu flamante nuevo botón.
¿Salió? :)
Veamos con este primer intento. Crea un módulo con lo siguiente:
Sub find()
Sheets("Hoja3").Select
ID = Range("B1").Value
valor1 = Range("C1").Value
valor2 = Range("D1").Value
valor3 = Range("E1").Value
valor4 = Range("F1").Value
Sheets("Hoja1").Select
Range("A2").Select
If ID = "" Then Exit Sub
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
If ID = ActiveCell.Value Then
If valor1 <> "" Then ActiveCell.Offset(0, 1).Value = valor1
If valor2 <> "" Then ActiveCell.Offset(0, 2).Value = valor2
If valor3 <> "" Then ActiveCell.Offset(0, 3).Value = valor3
If valor4 <> "" Then ActiveCell.Offset(0, 4).Value = valor4
MsgBox "Dato actualizado"
Exit Do
End If
Loop
End Sub
Teniendo en cuenta: Hoja1 es tu base de datos en la que he supuesto que el ID está en la columna A. Y a partir de la fila 2 por dejar una para las cabeceras.
Hoja 2 supongo que esta tu ficha de salida (búsqueda del registro).
Y la Hoja3 será para nuestra ficha de actualización.
Has una copia idética de la Hoja2 pero sin fórmulas en los campos. Sólo en la entrada que correcponde al ID pon =Hoja2! B1
(Sustituye B1 por la celda en la que está realmente el ID)
Y en el listado del programa, sustituye también B1, C1 D1, E1, F1, por las celdas donde están realmente los valores en la ficha (yo he supuesto el ID y cuatro campos más).
Claro que quizás tengas que adaptar algo y sería conveniente dimensionar las variables.
Bueno piénsalo un poquito uy me cuentas :)
He seguido mirando y la macro está bien.
Mi tabla no estaba pensada a partir de la celda 2, sino a partir de la celda 6. Siento liarte tanto!
¿Se podría hacer desde la fila 6? Es decir, dejar un espacio para encabezado, fecha de modificación, logo... ¿y luego comenzar la tabla?
Ya es la última pregunta...
Creo haber entendido todo, pero tengo un problemilla con la macro. No me funciona. Es como un hipervínculo a la hoja 1 y punto. La verdad, como no sé programar tampoco la puedo modificar, aunque si entiendo lo que pretendes con la macro.
Por no salir no sale ni la MSGbox.
Por cierto no he entendido lo de dimensionar las variables.
Por lo demás he intentado hacer tal y como lo dices...
Muchas gracias
:)
Claro... te decía que podías cambiar las celdas que pongo yo por las que a ti te convenga. Si quieres empezar en la fila 6 esta instrucción Range("A2"). Select pasará a ser así: Range("A6"). Select además en la hoja 3 las celdas B1 a F1 deberás cambiarlas por las que contengan los datos en tu ficha. Y quizás añadir alguna instrucción más (semejantes) si tienes más campos.
Si todo va bien no hará falta que dimensiones las variables.
Si cierras y calificas la pregunta, no te apures por preguntarme de nuevo si no consigues lo que quieres o tienes otra duda.
Manucas :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas