Ir al contenido principal

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

Comentarios

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

    ResponderEliminar
  2. 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

    ResponderEliminar
  3. 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.

    ResponderEliminar
  4. 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.

    ResponderEliminar
  5. 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...

    ResponderEliminar
  6. 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.

    ResponderEliminar
  7. Muy bueno tu blog agregado a favoritos

    mil gracias

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

    ResponderEliminar
  9. como abrir userfor cuando llegue fecha determinada

    ResponderEliminar
  10. 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.

    ResponderEliminar
  11. 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.

    ResponderEliminar
  12. 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

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

    muchas gracias

    ResponderEliminar
  14. 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.

    ResponderEliminar
  15. 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

    ResponderEliminar
  16. 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.

    ResponderEliminar
  17. 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

    ResponderEliminar
  18. 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.

    ResponderEliminar
  19. ¿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.

    ResponderEliminar
  20. 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

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

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

funciones: convertir numeros a letras con excel

En realidad hace tiempo que vienen consultándome sobre esto... quizás cinco o seis años . Debe ser una de las funciones mas buscadas de Excel, por lejos: la posibilidad de escribir: 1.534,63 y que en una celda aparezca magicamente "un mil quinientos treinta y cuatro c/15/100". Aquí les dejo una solución, basada en funciones , sin utilizar macros, la cual preparé exclusivamente para este Blog. A pesar de los millones de usuarios que requieren esta herramienta, no viene incorporada en Excel, debemos armarla nosotros mismos .  Luego de la imagen irá la explicación de como llegué a lograr esto, dado que es un proceso medianamente complejo , que utiliza tres o cuatro funciones básicas y requiere de varios pasos. así quedará nuestra planilla y siempre devolverá en letras el valor que ingresemos en A1 [+/-] Ver el resto / Ocultar Desde ya aclaro: esta no es " la forma " de hacerlo, simplemente es una mas, evitando el uso de macros. Sobre esta base, comencemos: 1) El núme

macros: como enviar mails desde Excel (vba)

Un gran amigo "on-line", Johan Moreno, de Colombia , me hizo llegar la inquietud de cómo enviar mails desde Excel . Si bien contaba con algunas líneas de código sobre el particular, decidí retomar mi ejemplo y adaptarlo mejor a las circunstancias. Hace unos minutos termino de remitirle un correo con la solución a Johan... desde Excel y con un archivo adjunto, mismo que transcribo a continuación para ayudar a todos con esta tarea. Veamos primero las dos formas principales de enviar mails: mediante Outlook o nuestro Web Mail ( yahoo, gmail, hotmail, etc, etc ) No soy usuario de Outlook en lo absoluto: no confío en los agujeros de seguridad que continuamente aparecen y, por otro lado, t eniendo a mi alcance una herramienta tan poderosa (y gratuita) como Gmail, la cual ahora también permite sincronizar los mensaje con la Pc para verlos offline (deben activarlo en "google labs") ... no creo que me haga usuario ni hoy ni mañana. Igualmente mas adelante daré una solució

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto. Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV(). la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla. [+/-] Ver el resto / Ocultar Vamos a necesitar una columna "auxiliar" para llevar a buen término este proyecto. Con macros el tema sería mas sencillo, pero aquí la cuestión es resolverlo con las funciones de Excel, sin VBA. Paso a paso: Como primer medida chequeamos que valores de la columna A coincide co