Macro de fecha parpadeante en Excel

Resuelto
edgc Mensajes publicados 7 Estado Miembro -  
 motorest -
Hola a todos,

Quiero hacer una tabla con:
Una fecha en A1
Una fórmula con fecha + 10 días en la celda B1
Quiero que en la celda B1, el resultado haga parpadear la celda cuando se alcance la nueva fecha.

¿Alguien puede ayudarme?
Cuidado, no soy muy bueno con las macros, ¡son mis primeros pasos!

Configuración: Windows 7 / Internet Explorer 9.0

20 respuestas

  1. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    Olvida la solicitud de EDGC, cada código es particular. En tu caso deberías haber abierto tu propia conversación.
    Si entiendo bien tu solicitud, en la columna F introduces la fecha de envío y en la columna J el artículo correspondiente, en la columna ? que queda por definir, la fecha de la devolución del presupuesto. Si la fecha de la columna ? o la fecha de la devolución del presupuesto que debes ingresar está vacía y la fecha de la columna F es anterior a 15 días con respecto a hoy, las celdas de las columnas F y J parpadean y se detienen cuando ingreses la fecha de la devolución en la columna ?. ¿Es correcto?

    A+
    Mike-31

    Una periodo de fallo es un momento soñado para sembrar las semillas del saber.
    1
  2. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    Pega este código en un módulo y asocia cada macro a un botón para probar si responde a tus expectativas; ya veremos más tarde el perfeccionamiento.

    Option Explicit

    Dim BlinkTime As Date
    Dim c, x As Range
    Public Sub Clignot()

    On Error Resume Next
    For Each c In Sheets("Feuil1").Range("A2:A150").Cells 'Zona del parpadeo
    If c.Interior.ColorIndex = -4142 Then
    If c.Value <> "" And c.Offset(0, 2) = "" And c.Value + 15 <= Date Then
    c.Interior.ColorIndex = 3 'Rojo
    Else
    c.Interior.ColorIndex = 0 'Blanco2 actualmente 0 a ver
    End If
    Else
    c.Interior.ColorIndex = 0
    End If
    Next c
    BlinkTime = Now() + TimeValue("00:00:01") 'el tiempo del parpadeo
    Application.OnTime BlinkTime, "Clignot"
    End Sub

    Sub ArretClignot()
    On Error Resume Next
    Application.OnTime BlinkTime, "Clignot", , False
    Sheets("Feuil1").Range("F2:F19,J2:J19").Interior.ColorIndex = xlNone
    End Sub

    --
    A+
    Mike-31

    Una época de fracaso es un momento soñado para sembrar las semillas del saber.
    1
  3. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    En las propiedades de tu hoja, pega estos tres códigos (clic derecho en la pestaña de la hoja correspondiente / ver código)

    el primer código inicia el parpadeo automáticamente cuando vuelves a la hoja, el segundo detiene el parpadeo para permitir las modificaciones de las celdas cómodamente, y el tercero detiene el parpadeo en cuanto abandonas la hoja, lo que facilita las entradas en las hojas del libro.

    Private Sub Worksheet_Activate()
    Call Clignot
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A:C")) Is Nothing Then
    Call ArretClignot
    Columns("A:C").Interior.ColorIndex = xlNone
    End If
    Call Clignot
    End Sub

    Private Sub Worksheet_Deactivate()
    Call ArretClignot
    End Sub

    En el ThisWorkbook, estos dos códigos: uno para detener el parpadeo al cerrar el libro y otro para seleccionar la hoja llamada "Feuil1" (a adaptar) al abrir y por lo tanto lanzar el parpadeo.

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ArretClignot
    End Sub

    Private Sub Workbook_Open()
    Sheets("Feuil1").Select
    Call Clignot
    End Sub

    En un módulo, pega estos dos códigos: uno que controle el parpadeo y otro para detenerlo.

    Option Explicit

    Dim BlinkTime As Date
    Dim c, x As Range

    Public Sub Clignot()
    On Error Resume Next
    For Each c In Sheets("Feuil1").Range("A2:A150").Cells 'Zona del parpadeo
    If c.Offset(0, 2).Interior.ColorIndex = -4142 Then
    If c.Value <> "" And c.Offset(0, 2) = "" And c.Value + 15 <= Date Then
    c.Offset(0, 2).Interior.ColorIndex = 3 'Rojo
    Else
    c.Offset(0, 2).Interior.ColorIndex = 0 'Blanco (actualmente 0 a revisar)
    End If
    Else
    c.Offset(0, 2).Interior.ColorIndex = 0
    End If
    Next c
    BlinkTime = Now() + TimeValue("00:00:01") 'tiempo del parpadeo
    Application.OnTime BlinkTime, "Clignot"
    End Sub

    Sub ArretClignot()
    On Error Resume Next
    Application.OnTime BlinkTime, "Clignot", , False
    Sheets("Feuil1").Range("F2:F19,J2:J19").Interior.ColorIndex = xlNone
    End Sub

    parametrando los códigos así, todo botón es innecesario, y si lo deseas, es posible hacer parpadear las celdas A, B y C indicadas.

    A+

    Mike-31

    Una época de fracaso es un momento soñado para sembrar las semillas del saber.
    1
  4. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    No hay ninguna fórmula para hacer parpadear una celda o el valor contenido en una celda; la única solución es VBA.
    Al finalizar tu solicitud "Ten cuidado, soy nulo en macros, ¡estos son mis primeros pasos!"
    lo mejor sería publicar tu archivo para que pongamos el código encima

    Para adjuntar tu archivo con este enlace

    https://www.cjoint.com/

    --
    Nos vemos
    Mike-31

    Un periodo de fracaso es un momento soñado para sembrar las semillas del saber.
    0
  5. Ricky38 Mensajes publicados 5776 Fecha de registro   Estado Colaborador Última intervención   1 463
     
    Hola,

    también podrías pasar por el formato condicional, esta forma de hacer que la celda no parpadee, pero puedes hacer que el texto o el fondo de la celda se muestre en un color de tu elección.

    Gracias

    --
    Todo problema tiene una solución... solo hay que ser perseverante.
    0
  6. edgc Mensajes publicados 7 Estado Miembro
     
    Buenas noches,

    Preferiría tener una celda parpadeante porque es más visible cuando no mantienes el ojo en tu hoja de cálculo de Excel en todo momento.

    Gracias por tu respuesta.
    0
  7. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    Para escribir un código VBA hay que ser preciso; si se te pide un ejemplo de archivo, es principalmente para ahorrarnos tiempo y adaptar un código a la estructura del archivo.
    Tu archivo tarda en llegar, así que esta noche me voy, mañana amanecerá.

    --
    A+
    Mike-31

    Un periodo de fracaso es un momento soñado para sembrar las semillas del conocimiento.
    0
    1. edgc Mensajes publicados 7 Estado Miembro
       
      Lo siento por esta respuesta tardía!

      Aquí está el archivo adjunto.
      Son las celdas en gris las que me gustaría que aparecieran parpadeando (en rojo si es posible) cuando la fecha haya pasado

      Gracias por tu ayuda

      https://www.cjoint.com/?0KbmdmLa36w
      0
  8. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    En tu solicitud querías hacer parpadear una celda en B cuya fecha tenía 10 días más que la fecha en A. En tu archivo adjunto las fechas en F y J solo tienen un día más, y ¿el parpadeo depende de la fecha en F y J con respecto a hoy, es decir, si la fecha en estas dos columnas es la de hoy la celda parpadea o incluso hoy y anterior? En el ejemplo, el parpadeo está ligado a hoy.

    aquí tienes el enlace: https://www.cjoint.com/?BKbqkzCCUN8

    A+
    Mike-31

    Una época de fracaso es un momento soñado para sembrar las semillas del saber.
    0
  9. edgc Mensajes publicados 7 Estado Miembro
     
    Buenas noches,

    Cuando hice mi pregunta, mi archivo aún no estaba creado; solo era un ejemplo que deseaba reproducir a mi conveniencia.
    Por eso hoy por la tarde creé este inicio de archivo para poder enviártelo.
    En realidad, quiero que las celdas de las columnas F y J parpadeen cuando se alcance la fecha y que sigan parpadeando aunque la fecha haya pasado.
    En lo ideal, debería poder cancelar el parpadeo pulsando un botón u otra cosa (por ejemplo).

    Gracias por tu ayuda.
    0
  10. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Re,

    Así

    https://www.cjoint.com/?BKbvtrPFHip

    --
    A+
    Mike-31

    Un periodo de fracaso es un momento soñado para sembrar las semillas del saber.
    0
  11. edgc Mensajes publicados 7 Estado Miembro
     
    Super así!
    Pero uno por cada línea, para borrar cada línea en cuanto termine.
    0
  12. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    ¿qué quieres decir con

    Pero una para cada línea, para borrar cada línea en cuanto termine

    --
    A+
    Mike-31

    Un periodo de fracaso es un momento soñado para sembrar las semillas del saber.
    0
  13. edgc Mensajes publicados 7 Estado Miembro
     
    Concentrémonos en una fecha parpadeante en cuanto se supere

    El resto no tiene importancia

    Gracias
    0
  14. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    Entonces, el archivo ¿está bien, verdad?

    --
    Nos vemos
    Mike-31

    Un período de fracaso es un momento perfecto para sembrar las semillas del conocimiento.
    0
  15. edgc Mensajes publicados 7 Estado Miembro
     
    Genial,

    Funciona como quería.
    No había notado antes el parpadeo porque las macros estaban desactivadas.
    Lo siento y de nuevo gracias.
    0
  16. motorest Mensajes publicados 1 Estado Miembro
     
    Hola,
    Esta macro es muy interesante
    ¿existe alguna mejora para que el parpadeo se detenga en función de una fecha de intervención en la misma fila pero en una celda distinta?

    ejemplo con el mismo archivo que mencionamos anteriormente, si colocamos una fecha en la celda fecha de intervención prevista. el parpadeo se detiene únicamente en la fila correspondiente

    Gracias de antemano
    Cédric
    0
    1. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
       
      Buenas noches,

      Sí, ciertamente, solo hace falta conocer el criterio desencadenante y el criterio que detendrá el proceso, con los rangos que contienen esos criterios

      Mike-31
      A+
      0
  17. motorest
     
    Gracias por esta respuesta rápida.

    de hecho, partí del archivo que se encuentra en la solicitud de "EDGC" arriba.

    él quería hacer parpadear las celdas de las columnas F y J en función de la fecha del día y de un valor dado.
    busco hacer que el parpadeo en las celdas se detenga cuando introduzco un valor (fecha) en una de las columnas siguientes

    Ejemplo para este archivo, el parpadeo se detiene si introduzco un valor (fecha) en la columna M.

    para mi aplicación personal, adapté la macro a otro archivo, pero no encuentro la solución.

    mi archivo incluye una fecha de envío de un artículo en reparación en una "celda".
    más de 15 días sin presupuesto hace que una celda parpadee en rojo.
    tan pronto como recibo el presupuesto, introduzco la fecha de recepción y la celda deja de parpadear.

    ¿es viable?

    Gracias de antemano
    0
  18. motorest
     
    entonces olvidamos el archivo anterior.....

    en la columna A introduzco la fecha de envío.
    en la columna C mi fecha de recepción de la cotización.

    A partir del momento en que he introducido una fecha de envío en A
    y respecto a la fecha actual, hayan pasado 15 días sin recepción de la cotización, mi columna C empieza a parpadear hasta que introduzca una fecha en la columna que parpadea, es decir, en "C"

    ¿vale para 150 filas de Excel?

    Gracias de antemano
    Cédric
    0
  19. motorest
     
    Gracias,

    He probado un poco en todos los sentidos para ver si todo funciona. Esta macro funciona bien.
    La fecha de envío se empieza a parpadear una vez que hemos superado 15 días.
    y se detiene cuando introducimos una fecha en la columna C.
    algunos problemas durante las entradas complementarias, pero nada grave.

    pero abuso un poco en realidad me gustaría que fuera la celda C y no la A
    fecha de "recepción de presupuesto" la que parpadee mientras no introducimos una fecha en C.

    mantenemos todo, solo que el parpadeo se haga en la columna C.

    ............. A.......................................B............................................C
    Fecha de envío en reparación...... reparador......................fecha de recepción del presupuesto
    01/11/2013............................... rep 1
    15/11/2013;...............................rep12
    ................................................. rep16
    ..................................................rep 9

    Gracias

    Cédric
    0
  20. motorest
     
    Hola,

    Gracias, funciona muy bien,

    Me llevó un poco responder porque quería entender qué estaba haciendo.
    Todo no está aún claro para mí, pero logré hacerlo funcionar en mi archivo adaptando los códigos.

    otra vez muchas gracias, voy a profundizar esto

    Cédric
    0