Hola Elsa!

He visto que sabes mucho de Macros para Excel y programación en Visual Basic. Resumo mi consulta:
Tengo una lista o tabla que debo imputar cada gasto a medida que se van autorizando. Todo lo no autorizado está arriba de la lista o tabla, y abajo se dividen en tres ( imputación personal, varias e individuales). Mi idea es que al ingresar la imputación determine cual de estas tres es y posteriormente corte la fila y la pegue arriba de la última fila correspondiente (o abajo de la fila divisoria de cada uno de los 3 tipos).
El problema es que no hay 3 imputaciones distintas, hay un montón! Es decir, en lo que es personal puede haber por ejemplo LEGXXXX RAGXXXX entiéndase "x" cualquier número y así con los otros tipos.
Es por esto que preciso tu gran ayuda para tener una idea de cómo armar la macro (me interesa mucho el Visual Basic pero todavía no lo se usar muy bien).
Mil gracias!
Mauro

1 respuesta

Respuesta
1
A raíz de la cantidad de consultas que recibí, me sería de ayuda trabajar directamente sobre tu modelo. Enviame una muestra de tu hoja a mi correo (lo encontrarás en mi sitio) o dejame aquí el tuyo, pasando la consulta a privada.
http://es.geocities.com/lacibelesdepunilla
Ok, te acabo de enviar el archivo a los mails de las páginas.
Saludos.
Lo que será difícil es poder ubicar el grupo (personal, varios, etc) porque a medida que agregues filas, se te irán corriendo hacia abajo.
Mi sugerencia es que utilices distintos rangos: Engagement (col A hasta H), Personales (J...) y así a derecha.
Luego para agregar un registro a cada grupo, evalúas cuál es su última fila ocupada.
Por ej. sabiendo que el Personales empieza en col J harás:
fila=range("J65536").end(xlup).row + 1
Y copiás lo que necesites en: cells(fila, 10) para la col J, cells(fila, 11) para la col Remito, etc.
Si por algún motivo necesitas que todo esté en las mismas col como ahora, necesitas tener como opción los mismos textos que tus encabezados de grupo al momento de ingresar la imputación (podría ser como una lista validada o combo, no sé que tenés para el ingreso de datos)
Luego tu rutina, recorre la col A buscando ese texto. Cuando lo encuentre, inserta 1 fila por debajo para permitirte agregar ese registro.
Armalo y si te queda alguna otra duda, consúltame nuevamente
Entonces confirmo una de mis dudas a la hora de usar macros y visual basic, ¿no tengo forma de indicarle en vez de un número de fila o columna "fijo" un texto o valor que se encuentre en alguna de las filas o columnas, llámese "variable"?. Es decir, mi problema como me indicaste es que a medida que ingreso una imputación, el número de fila de cada grupo se corre, haciendo variar toda la macro.
En si necesito que todo esté en las mismas columnas, aunque todo lo que ingreso no lleva ningún orden de validación (no entendí qué es combo).
¿Y si utilizo cada grupo en distintas hojas? Digo, "sin imputar" en hoja 1, "personales" hoja 2, "varios" hoja 3; de esta forma cada fila se mantiene fija en "1" (por ej) y depende qué ingrese al imputarlo lo corta y pega abajo de la fila de la hoja correspondiente.
Esto lo digo desde mi escaso conocimiento en Visual Basic.
Perdón por realizarte tantas consultas.
Saludos.
Creo que no leíste todo o no me expresé claramente. Vayamos por partes:
La opción de colocar cada grupo en hojas distintas es lo mismo que colocar en rangos de col distintas, como te lo expliqué al inicio. La fila la tomás con una variable.
fila = range("J65536").end(xlup).row + 1   'si el 2do grupo se ubica a partir de la col J
Anteponé el nombre de hoja si utilizarás distintas hojas por grupo. El rango en ese caso se toma de la col A para todos.
También se puede hacer correr las filas hacia abajo si necesitas todo en las mismas col.
Lo que no me terminás de aclarar es cómo obtenés la información: cómo obtenés de qué grupo estás ingresando datos.
Cuando me aclares esto te explicaré lo del combo, salvo que optes por separar los grupos ya sea en col u hojas distintas.
En realidad la imputación se ingresa en forma manual, y de acuerdo a dónde se carga llevamos toda la fila a cada grupo.
Ejemplo, cargo un gasto que no estaba autorizado con imputación "24532939" como es un solo gasto corresponde al grupo "individuales" entonces corto y pego abajo de la fila divisoria "individuales" o bien arriba del último cargado en ese grupo. Del mismo modo, viene otro que se carga "LEG9090" entonces corto y pego abajo de la fila divisoria "personales" o bien encima del último cargado en ese grupo.
Gracias.
Entonces una vez que decidas qué hacer con los grupos (si dejarlos en la misma col, en col aparte o en hojas distintas) incluí también las instrucciones de cortar y pegar:
Selection.cut destination:=cells(fila,1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas