Saltar al contenido

Mensaje (MsgBox) de alerta de vencimiento.


Recommended Posts

publicado

Hola colegas, buenas tardes reiteradas.

Vuelvo por acá, ahora para que me brinden ayuda con una alerta. Me explico:

Este es el proyecto del que les comenté que mi Jefe me pidió hacer. En el FrmCombustible debo crear dos (2) alertas,

UNA - Que un (1) mes antes de vencerse las tarjetas me envíe un MsgBox : "La Tarjeta " &      " se vence en un mes"

                El Listado de tarjetas está en la Hoja5 (Auxiliares). Se debe tener en cuenta que puede estar en blanco o vacío (Empty) este campo. Yo comencé a trabajarlo, pero me "perdí", porque creo se debe generar un ciclo que recorra las tarjetas y las fechas de vencimientos y las compare con la fecha actual. (Modulo4 )

DOS - En este mismo Formulario (FrmCombustible), necesito me envíe una alerta cuando una tarjeta X tenga un consumo de 350, porque el valor máximo a tener es de 400. (Columna "Consumo")

Esto puede ser al abrir el archivo o al cargar el formulario.

De estos "AVISOS" tengo  que hacer algunos más, pero con la ayuda de ustedes con estos dos puedo hacer los que me falten.

Mil gracias de antemano.

Espero puedan comprenderme.

Un abrazo a todos.

Pino

Sistema de Matto Autos.xlsm

publicado
Hace 13 horas, pinoji dijo:

Espero puedan comprenderme.

Difícilmente Pino...

Dices que los datos están en la hoja 5, pero llenas el listbox con los datos de la hoja 7. Aparte en la hoja 5 no tienes los consumos, están en la hoja 7.

¿Porqué no lo tienes todo en una única tabla? Es una locura ir de una hoja a otra para buscar. Un código para buscar las vencidas sería el siguiente:

Sub Alerta_Vencimiento_Consumo_Tarjeta()
Dim x&, h&
Dim uFila As Long
Dim numeroT As Integer ' Variable que guarda el numero de tarjeta
Dim FechaH As Date ' Variable que guarda la fecha de Hoy
Dim FechaV As Date ' Variable que guarda la fecha de Vencimiento
Dim vencida() 'matriz para meter las vencidas
Dim dinero() 'matriz para meter las pasadas de consumo

FechaH = Date

uFila = Hoja5.Range("I" & Rows.Count).End(xlUp).Row
ReDim vencida(1 To uFila, 1 To 1)
ReDim dinero(1 To uFila, 1 To 1)

h = 1
For x = 2 To uFila
    If Cells(x, "K") <> "" And DateDiff("m", CDate(Cells(x, "K")), FechaH, vbMonday) >= -30 Then
        vencida(h, 1) = Cells(x, "I")
        h = h + 1
    End If
Next x

End Sub

 

publicado

Buenos días colegas. Saludos y mis deseos que se encuentren bien de salud.

Buenos días profesor y amigo Haplox. Siento mucho causarle estas molestias y aunque me he dado cuenta que he avanzado en mi aprendizaje de VBA o adquirido algunos conocimientos, mucho es lo que me falta y estoy claro (y lo comenté) que este proyecto me iba a costar trabajo, pero no voy a rendirme, no es mi estilo.

Por favor, le agradecería infinitamente me diera una idea de como resolver el problema. Ustedes poseen un conocimiento enorme sobre Programación, se graduaron de esta materia, pero yo soy empírico y hace apenas 1 año y 4 meses escribí mi primer código en VBA. No pretendo justificar mis errores ni crear un ambiente "lastimoso", no soy de ese tipo de persona, para nada, yo lo que busco es APRENDER cada día de ustedes, que hacen una labor inmensa, con un amor y entrega especial, con ese altruismo que los caracteriza.

Si se da cuenta y busca en el historial, nunca vuelvo a preguntar algo que ya pregunté, porque cada solución que me ofrecen ustedes busco la manera de estudiarla, analizarla para poder entenderla y así aplicarla a nuevos proyectos.

Amigo Haplox, yo le agregué en la Hoja5 con la función Sumar. Si los datos del consumo que se van incrementando por tarjetas en la Hoja7, no se si esto pueda "simplificar" el problema, pero los dos (2) datos que necesito ahora se encuentran en una solo hoja (Hoja5).

Por favor, me apena todo esto, porque no soy el único con dudas y ustedes ademas de esto tienen otros problemas (personales, laborales, sociales, económico) que atender.

Envío el archivo adjunto para que lo vea y me diga. Si es necesario puede hacerles las modificaciones que usted entienda.

Un saludo a todos.

Pino

 

 

Sistema de Matto Autos.xlsm

publicado

Que tal @pinoji

Estuve analizando tu información, yo en lo particular, yo no haría mediante un Msgbox este tipo de alertas,

Te Doy mi propuesta, solo es cuestion de que lo adaptes en tu proyecto.

 

y referente a tu punto numero dos, de igual manera utilizaría un form para enlistar el consumo en exceso

Un saludo,

Sistema de Matto Autos (Autoguardado).xlsm

publicado

Buenas Tardes DiegoLG, espero se encuentre bien de salud.

Veo interesante y bien su propuesta, pero esto añadiría mas hojas y mas Form al proyecto (al menos dos más de cada uno) y el proyecto aun le faltan cosas, es por ello que yo pensaba en MsgBox cuando se "cargara" el FrmCombustible y me fuera dando las tarjetas que le restan 30 días para su vencimiento, el resto no.

De todas maneras es una variante excelente y le agradezco su interés y pronta respuesta.

Un abrazo desde acá y mis respetos.

Pino

 

publicado

Pregunta, vas a crear un concentrado hoja por hoja?

si es así, te sugiero que tengas un concentrado general pero en una sola hoja.

publicado
Hace 57 minutos , pinoji dijo:

esto añadiría mas hojas y mas Form al proyecto (al menos dos más de cada uno)

Me refiero a este mensaje, quiero entender que tu información es en varias hojas o no?

¿O por que tendrías que añadir mas Form? se supone que si la información esta en una sola hoja, no deberías de añadir mas form, ni hojas

publicado

A ver amigo Diego, por lo que vi en su solución, creó una hoja nueva (Auxiliar2) y el Form Vencimiento, imagino que para controlar los Consumos se haga otra Hoja y otro Form. Le recuerdo que yo no tengo experiencia en programación y voy aprendiendo día a día sobre todo con ustedes. Por otro lado estoy trabajando la parte del Combustible, pero cuando llegue a la parte de los Mantenimientos tendré que crear otras alertas y esto, imagino, conllevaría a mas hojas  y mas Form. Quizás esté diciendo un barbarismo, creo que seria un buen momento para aclarar estas dudas y yo poder aprender.

No se si respondo su pregunta mi amigo y me siento apenado por tantas "idas" y "vueltas" y ustedes con otras cosas por hacer. Créame que realmente es  difícil para mi.

Usted dirá.

Mis respeto.

Pino

publicado
Hace 24 minutos , pinoji dijo:

creó una hoja nueva (Auxiliar2)

Hice una copia para no usar tu hoja original, solamente fue de prueba.

 

Hace 24 minutos , pinoji dijo:

Form Vencimiento, imagino que para controlar los Consumos se haga otra Hoja y otro Form.

No es necesario crear otro form ni nada, se puede integrar en un solo form

te adjunto nuevamente ya con el consumo

Sistema de Matto.xlsm

publicado

Buenos días colegas. Espero se encuentren bien de salud.

Buenos días amigo Diego. Le ofrezco disculpas por no responder antes, pero yo uso la Internet de un amigo en el trabajo y no trabajé sábado ni domingo.

Su propuesta está bien, solo que no se muestran el vencimiento de las tarjetas (ListBox1). Estuve revisando el código, pero lo vi bien y no se cual es la razón.

Gracias por su respuesta.

Saludos

Pino.

publicado

Buenos días amigo, aamm, si muestra,  tal vez no te muestra debido a que las fechas que se encuentran capturados en la hoja, no son iguales a los 30 días, si quieres hacer la prueba captura por ejemplo 14/09/2022 y verás que si muestra, yo respete la condicionante que mencionaste en tu consulta.

Si tienes dudas, te leo.

Saludos,

Diego

publicado

Buenas reiteradas amigo Diego.

Usted tiene razón, pero tengo un pequeño problema, o mas bien una pequeña adecuación al código. Le explico:

Yo lo que necesito es que cuando una tarjeta llegue a los 30 días antes hasta su vencimiento me lo muestre., no las demás. Yo le hice un pequeño arreglo al código:

If CDate(.Cells(Lin, 4)) - FechaHoy >= 30 Then

Pero esta variante me da por ejemplo la que vence en febrero del 2024 y esa no me interesa hasta enero del 2024, entonces hice otra modificación a su código:

If CDate(.Cells(Lin, 4)) - FechaHoy >= 30 And CDate(.Cells(Lin, 4)) - FechaHoy =1 Then

pero entonces no me muestra nada.

Podrías por favor, indicarme que hacer en este caso.

Gracias y disculpe tantas molestias.

Pino

publicado
Hace 9 minutos , pinoji dijo:

If CDate(.Cells(Lin, 4)) - FechaHoy >= 30 And CDate(.Cells(Lin, 4)) - FechaHoy =1 Then

Copia y pega de nuevo el código así:

If CDate(.Cells(Lin, 4)) - FechaHoy >= 1 And CDate(.Cells(Lin, 4)) - FechaHoy <= 30 Then

 

publicado
Hace 4 minutos , pinoji dijo:

Hola nuevamente amigo Diego, que pena con usted, pero no me imprime nada en el ListBox.

En ese caso mejor sube nuevamente tu archivo y con un ejemplo, ponme que es lo que realmente debe de mostrar en el form.

Saludos.

publicado

Mire amigo Diego, no es nada complicado lo que necesito.

Por ejemplo, la tarjeta (ejemplo de abajo)  vence en Octubre de 2022, yo necesito que desde que la falta 30 días para su vencimiento (01/Septiembre/2022) me lo esté "Recordando"  hasta el día de su vencimiento, o sea, el 1 de octubre de 2022, las demás no necesito me las muestre.

9510110102729614 Gasolina Esp.

oct-22

Sistema de Matto.xlsm

publicado
Hace 39 minutos , pinoji dijo:

no es nada complicado lo que necesito.

Alguien le dije una vez así, y sabes que me respondió, entonces si no es complicado por que no lo haces tu.

 

Hace 39 minutos , pinoji dijo:

yo necesito que desde que la falta 30 días para su vencimiento (01/Septiembre/2022)

Creo que no analizaste esta parte del código.

FechaHoy = Date

Se supone que le estamos diciendo al código, si con la fecha de hoy es mayor o igual con la fecha que esta en la columna Fecha Venc. y es menor o igual a los 30 días, .... si cumple esta condición te va mostrar en el form.

 

eso quiere decir que los de octubre no te va mostrar aun,  hasta llegar al 01/09/2022 , es como si yo estuviera escribiendo de esta manera:

        If CDate(.Cells(Lin, 4)) >= "01/09/2021" And CDate(.Cells(Lin, 4)) <= "01/10/2022" Then

Pero si quieres que te muestre los de octubre entonces sería así: 

FechaHoy = Date + 30
 

publicado

Amigo Diego; primero, cuando me refería a "no es nada complicado lo que necesito. ", lo decía pensando en usted, que es el que sabe, no en mi, que apenas estoy tratando de aprender. Créeme que si supiera hacer estas cosas, no las preguntaría. Por otro lado yo siempre trato de analizar los códigos que obtengo de ustedes porque sé que están bien hechos, pero no siempre los entiendo y sí me di cuenta de que las de octubre no se pueden mostrar, solo le puse un ejemplo con esa para que tuviera una idea, pero la que se vence en agosto sí tiene que mostrarse y no lo está haciendo.

De veras yo me siento apenado por tantas molestias que le he causado por este tema. Le propongo lo deje ahí y yo buscaré otra solución. Le estaré eternamente agradecido por su paciencia e interés. Realmente usted tiene cosas mas importante que atender.

Le ofrezco disculpas.

Gracias mil.

Mis respetos y saludos

Pino

publicado
Hace 1 hora, pinoji dijo:

pero la que se vence en agosto sí tiene que mostrarse y no lo está haciendo.

Por eso te pedí que pusieras un ejemplo cuales son los que debería de mostrar en el form

 

Hace 2 horas, DiegoLG dijo:

En ese caso mejor sube nuevamente tu archivo y con un ejemplo, ponme que es lo que realmente debe de mostrar en el form.

aqui te especifiqué claramente.

 

si lo que quieres es que se muestra agosto, entonces sería así:

 If CDate(.Cells(Lin, 4)) - FechaHoy <= 30 And .Cells(Lin, 4) > "" Then

Espero haberte ayudado, saludos.

publicado

Mil gracias amigo Diego, espero puedas disculparme tantas molestias y aunque no lo parezca, he aprendido un par de cuestiones en estos intercambios entre usted y yo. Su ayuda es excelente.

Espero tenga un buen resto del día.

Mis respetos.

Pino

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.