Regresar a la Pagina de Inicio

14 de dic. de 2011

alertas de fechas con excel - parte II

En la primer entrada sobre este asunto (link), vimos una de las cientos, o miles, de formas en que podemos solicitarle a Excel que nos "avise" cuando estamos frente a un determinada fecha. Pero un lector del blog necesita otra alternativa, misma que trataremos en la presente entrada.
Veamos la siguiente tabla:
[+/-] Ver el resto / Ocultar

22 comentarios:

Anónimo dijo...

como puedo achicar la hoja de un archivo de excel?
que tenga por ejemplo solo 20 columnas y 10000 filas?

Anónimo dijo...

hice un archivo de excel compartido para poder abrirlo en simultaneo desde 4 pc conectadas en red. ahora, cada vez que grabo los cambios, el archivo crece y crece aun sin realizar modificaciones hasta que se vuelve imposible de trabajar, y tengo que volver a crearlo de 0. sera que guarda info de control de cambios? cuando lo vuelvo a crear ocupa menos de 500k, y unmes mas tarde vuelve a pesar 10 o 15 megas

Damian Omar Silva dijo...

No es posible. Podrías seleccionar las columnas que deseas ocultar e ir a formato /columna/ancho y darle un valor de cero. Luego haces los mismo con el alto de las filas. Esto hará invisibles dichas columnas y filas, pero no se pueden eliminar.

Damian Omar Silva dijo...

Sobre el tamaño de los archivos de excel: http://support.microsoft.com/kb/930253/es

Fijate si esa solución es viable y avisame, es un tema recurrente en archivos compartidos.

Robert Rivero dijo...

Hola Damian,

EXCELente!! trabajo...

Sin duda nuestro EXCELentísimo EXCEL no nos deja de sorprender!!

En particular me gustó mucho el Post sobre Algoritmos genéticos!! ya que tiene una buena base para seguir aprendiendo sobre IA.


Me chiflan esos temas si te pasas por mi Blog! tengo algo que puede servirte para animar más la cosa!!

Reconocimiento de Voz...

Hay un vídeo demostrativo en la sección videotutoriales!!

http://riverorobert.blogspot.com/


PD. El desarrollo web no es lo mío je je por lo que te encontrarás con un blog de novato aún, je je...

Un saludo y Feliz Navidad...

Damian Omar Silva dijo...

Gracias Roberto, muy muy bueno el blog, ya lo tengo en mis "favoritos". El tema de los AG es apasionante, casi sin fin y no hay muchos ejemplos en VB (en realidad nunca encontré ninguno, jaja) y x eso lo levanté.
Un excelente 2012 para vos y todos los tuyos.
Iré leyendo tu blog y seguramente te escriba. Un abrazo.

Anónimo dijo...

Muy bueno tu blog agregado a favoritos

mil gracias

Damian Omar Silva dijo...

Gracias a vos por tu mensaje.
Un abrazo.

Anónimo dijo...

Hola
Se podra que aparesca la suma de lo que se debe en el listbox,como seria?

Anónimo dijo...

como abrir userfor cuando llegue fecha determinada

Damian Omar Silva dijo...

si, se puede. vas a necesitar hacer dos modificaciones en el código.
Primero: dentro del último If..... vamos almacenando en una variable los valores de la columna "E"
If Cells(X, 1) = Cells(X, 2) Then
lstCuotas.AddItem Cells(X, 1) _
& " - abona: " & Format(Cells(X, 5), "currency")
valor=valor + cells(x,"E")
End If

Segundo: antes de terminar el procedimiento (End Sub). ahora tenemos que colocar la variable "valor" dentro del listbox:
lstCuotas.AddItem valor

y listo, debería funcionar sin problemas. Tené en cuenta que voy sumando los valores de la columna E (con Cells(X,"E")), si necesitas sumar otra columna, simplemente cambiá la letra.
Suerte y cualquier cosa me avisas.

Damian Omar Silva dijo...

Vamos a suponer que tienes en A1 una fecha: 12/01/2012. Vba es un lenguaje orientado a "eventos", por cuanto necesitaremos uno que sea el detonante y active al UserForm.
Un evento puede ser Workbook_Open() (cuando se abre el libro):
Sub Workbook_Open()
dim Fecha as date
Fecha = "aqui va la fecha en cuestion"
'y ahora comparo:
If Fecha = Sheets("Hoja1").Range("a1") then
UserForm1.Show
end if
End Sub

ese código también podría ser llamado al activarse una determinada hoja. En la ventana de código de la hoja en cuestión tenés que escribir:

Private Sub Worksheet_Activate()
dim Fecha as date
Fecha = "aqui va la fecha en cuestion"
'y ahora comparo:
If Fecha = Sheets("Hoja1").Range("a1") then
UserForm1.Show
end if
End Sub

la fecha podría ser tomada del sistema o de otras celdas, eso depende de tu proyecto, pero aquí te tiro una idea de como activar el formulario usando dos eventos.
cualquier cosa me avisas.

Daniel Gonzalez dijo...

Damian buenas tardes primero felicitarte por la pagina es excelente me ha ayudado mucho. quisiera preguntarte, tengo en un libro varias hojas iguales que cada una tiene columna1: fecha pago, columna2 nombre banco, columna 3 intereses la primera hoja es para el banco 1 la siguiente banco2 etc ( cada banco tiene plazos diferentes). finalmente tengo una hoja resumen donde las junto mediante un igual y busco la celda para arrastrar el valor y cuando acabo de llenar el banco1 sigo en la fila siguiente con el banco2 y arrastro hasta tener una lista de todos los bancos y de este modo poder crear una tabla dinamica en donde me muestre la fecha de pago que banco es y el total resumido. ya tengo el msgbox que si cae la fecha de pago con la del sistema me arroje un msgbox pero mi pregunta es como juntar estas hojas automaticamente en una hoja resumen y que si cambio digamos la hoja1 en longitud se actualize la del resumen tambien y de este modo la tabla dinamica??. No hago funcion consolidar porque si dos creditos caen el mismo dia de pago me los suma y yo los necesito separados por cuanto es de cada uno por que las tasas son diferentes. mil gracias por tu ayuda espero haber sido claro sino vuelvo y te comento muchas graciass

Daniel Gonzalez dijo...

Damian le pregunto como avisar dos dias antes y un dia antes de una fecha con un msngbox o con un formulario

muchas gracias

Damian Omar Silva dijo...

Mirá este código:
Dim F1, F2 As Date

F1 = Date
F2 = "26/02/2012"

f = DateDiff("d", F2, F1)

If Abs(f) = 2 Or Abs(f) = 1 Then
MsgBox "aviso de cumpleaños"
End If


con la función DateDiff le pido a VBA que me diga cuantos días ( "d", primer argumento) de diferencia hay entre las dos fechas (F1 y F2).
¿si? Luego vuelvo al resultado absoluto (con abs(), lo hago si o si positivo) y con un If... pregunto si la diferencia es igual a 2 o 1 día.
fijate se puedes adaptarlo a tu proyecto, si necesitas mas ayuda me avisas.

Damian Omar Silva dijo...

Daniel: muchas gracias por tu mensaje.
Me vendría muy bien que me pases el archivo (aunque sea una versión reducida del mismo), para conocer cabalmente la estructura y tipo de datos que posee, y así trabajar directamente sobre el ejemplo.
Envíamelo a la dirección de correo que figura al pié del formulario.
un abrazo

PEDRO dijo...

Felicidades Damian, super interesamte tu blog, muchas informaciones bien atinadas. Temgo un pequeño problema: Tengo una lista de personas que tienen que pagar en x fecha, pero yo quiero que excel me avise mediante un msbox dos dias antes, quienes tienen que pagar, que me de los nombres y su telefono (en cual tambien lo tengo en la tabla). Gracias mil.

Damian Omar Silva dijo...

Pedro: si usaste mi código para hacer tu ejemplo lo que necesitas es sencillo de implementar.
Supongamos que la fecha está en la columna A.
for x = 2 to fin
if isDate(cells(x,"A")) then
if DateDiff("d",Cells(x,"A"),Date)=2 then
msgbox cells(x,"A") & cells(x,"B")
end if
end if
next

ese bucle recorre la tabla desde 2 hasta fin, en donde fin es el número de la última celda de la tabla. Si hay fecha en la Columna A, uso la función "DateDiff" de Visual Basic para calcular la diferencia entre esa fecha y la fecha del sistema (Date). Si es igual a 2, muestro un mensaje en donde concateno la columna A y la B.
Fijate que es muy fácil adaptarlo a tu proycto, solo debes cambiar que columna ir revisando (en dónde están las fechas) y que columnas se muestran en el MsgBox.
Cualquier cosa me avisas. Gracias x tu mensaje

Anónimo dijo...

Que tal damian mi consulta es como se podria aplicar a todo un libro de excel y que el resultado lo muestre en una sola ventana.

Damian Omar Silva dijo...

¿vos me estás preguntando si esa rutina se puede aplicar a todas las hojas de un libro? si, es factible, pero para trabajar mejor y mas seguro, todas las tablas de las hojas deberían respetar el mismo formato y estructura. ¿se entiende?
Luego con un bucle for each... se recorren todas las hojas, buscando en las tablas la misma información.
bajate este archivo de texto en donde te hice el ejemplo, copialo y pegalo en el proyecto:
https://sites.google.com/site/damianomarsilva2/ejemplo.txt
cualquier cosa me avisas. gracias x tu mensaje.

gagnier dijo...

hola puedes darme la formula para si se cumple la condicion de que el valor que hay en dos columnas diferentes es el mismo, se muestre el contenido de toda la fila, al abrir el excel, gracias de antemanos

Damian Omar Silva dijo...

gagnier: explícame un poco mas detalladamente que es lo que necesitas, así puedo ayudarte bien.

Publicar un comentario en la entrada

Regresar a la Pagina de Inicio

ENTRADAS MAS RECIENTES (ULTIMAS 10)


las + vistas

10 ULTIMOS COMENTARIOS DE MIS LECTORES

Free counters!
blog de periodismo




GRAFICA RIO BRAVO
Serigrafia-Offset
Rosario - Santa Fe - Argentina
TE: 0341 4664028