Control de Estacionamiento en Excel (Parking Access Control in Excel)


En este artículo vamos a ver otra aplicación práctica que podemos crear con Excel, un “Control de Estacionamiento”. Esto nos sirve para poder controlar el tiempo, básicamente, que un auto está detenido dentro de nuestro estacionamiento. Y por supuesto, nos permite cobrar por el servicio e imprimir el ticket.

Excel es muy versátil como ya sabemos, nosotros tratamos siempre de utilizar lo mejor posible las características gráficas ya que esto lo hace más interesante, que solo utilizar una lista de celdas con campos varios. Siempre tratamos de crear algo nuevo, con características únicas, ingeniosas y simples. Les recomendamos que lo tengan en cuenta para sus aplicaciones, siempre es más atractivo lo gráfico y que sea tipo panel de control (dashboard), con gráficos, botones, etc.

 

El video relacionado está cargado en nuestro canal de YouTube “ExcelminiApps”. Sino directamente a través de este link o click en la imagen.
Tratatermos de ver y analizar los aspectos generales de la aplicación. Es un tanto compleja, más de lo habitual pero con todos estos elementos lo podrán lograr. En este caso no es más que utilizar los mismos elementos que los utilizados en el artículo “Gestos de Bares y Restos”. La diferencia es que se trata de otro tipo de negocio o rubro por decirlo así pero el panel de control es bastante similar y utilizamos el evento “Doble Click” para hacer lo que queremos, nuestra tarea más fácil.
Todas nuestras aplicaciones tratan de solucionarnos y facilitarnos algunas tareas que pueden ser repetitivas, aburridas y hasta cansadoras a veces.
Nuestra intención es lograr motivarlos y de esta manera fomentar su desarrollo personal. Recuerden eso!

Esta aplicación también permite imprimir un ticket para entregarlo al cliente. Recomendamos que utilicen de esas Impresoras Térmicas que sirven para tickets, justamente. Lo pueden buscar en ebay por ejemplo con la palabra clave “Thermal Printer” y son baratas, es decir que puede estar a nuestro alcance. De otra manera podemos utilizar cualquier impresora pero estaríamos utilizando mucho papel,  más del que necesitamos, esto sería un desperdicio.

Referencias:
En este artículo como en los demás utilizamos elementos que ya habíamos visto anteriormente. Como dijimos tratamos de hacer algo gráfico tipo dashboard o cuadro de controles. En este caso no hay ejemplo más aproximado que los artículos:

Principalmente estos dos pero por supuesto que sirven todos los artículos del blog, en cada uno de ellos se ve algún elemento nuevo y especial. En este caso significamos el método de selección por botones y doble click.

Funcionamiento:
Tenemos un libro con tres hojas para nuestra aplicación, principalmente, pero podrían ser más. Por ejemplo se le pueden agregar gráficos, reportes, etc. Para hacer la explicación más simple utilizamos una plantilla modelo con la menor cantidad de hojas.

Las hojas son tres:
·         Recibo:


En esta hoja tenemos el “panel de control” donde podemos ver en resumen todo lo necesario para gestionar nuestro Estacionamiento. Por ejemplo la cantidad de lugares disponibles, podemos seleccionar los lugares, podemos ingresar la patente de los vehículos o autos, podemos elegir el costo horario e incluso podemos imprimir el ticket si es así requerido.
Para ingresar un auto podemos ver a la derecha la cantidad de lugares disponibles, como ven son 26 lugares o plazas. Si la plaza está vacía aparece un color blanco, si está ocupada es de color naranja y si está libre color verde.

Para seleccionar una unidad o auto primero damos doble click sobre un lugar vacío, luego rellenamos la celda “Placa” con la patente o placa del auto y clickeamos el botón ingresar con lo cual automáticamente se guardan los datos en la hoja “Parking” para retener el estado actual.
Si queremos entregar un auto y cerrar la plaza, elegimos nuevamente el lugar haciendo doble click arriba del número correspondiente con lo que nos aparecerán los datos. Luego pulsando el botón cerrar estará finalizado el tiempo y obtenemos la visión de nuestro ticket de esta manera podemos cobrar, por ejemplo. Y si fuera necesario con el botón imprimir podemos hacer la impresión del ticket.

Una vez cerrada la plaza los datos se guardan en la hoja “Acumulado”, hablamos de todos los datos de la transacción. En este punto la plaza representada por la celda con un número sigue estando verde con lo que se preguntarán ¿por qué directamente no pasa al estado blanco o vacío? La respuesta es muy simple, es necesario este estado porque al igual que lo visto en el “Gestor de Bares y Restos”, hay un tiempo necesario para desocupar la plaza o el lugar. Entonces si está en verde significa que se está retirando por lo que si viene un cliente podemos dar otra plaza así no hay interferencia. Parece simple y lógico  pero sería un error no tenerlo en cuenta.

·         Parking:


Como ven en esta hoja se introducen los valores del estado actual de las plazas del estacionamiento. Contiene todos los datos de interés. Este mecanismo también se usó en el “Gestor de Bares y Restos”. Estos datos se mantienen hasta que ejecutemos alguna acción en la hoja “Recibo”.

·         Acumulado:



En esta hoja tenemos el resumen de todas nuestras ventas, por decirlo de alguna manera. Esto es importante para llevar el control diario por ejemplo pero también nos sirve para llevar un registro histórico y poder utilizarlo el alguna situación, una revisión, algún malentendido, etc.

En este caso se les llamo así pero se pueden nombrar como uno quiera, por ejemplo a la hoja “Recibo” se le puede llamar “Principal, main o home”. A la hoja Parking se le puede llamar “Placing u ocupación” y la hoja “Acumulado” se le puede llamar “Resumen”, etc.

Procedimiento General:
El principio de funcionamiento ya lo vimos a grandes rasgos en el apartado anterior, vamos a profundizar algo más.
En resumen, estando en la hoja “Recibo” podemos gestionar el estacionamiento. Cuando pulsamos el botón ingresar los datos con una macro se copian (por decirlo así) a la hoja “Parking”. Cuando pulsamos el botón cerrar estos datos además se copian en la hoja “Acumulado”. En el momento que cerramos la plaza ponemos en juego el momento del día y horario. De esta manera por una simple formula y haciendo una resta podríamos obtener el tiempo transcurrido.

El código en si no es algo que no se haya visto antes, sin embargo lo mostramos. Lo más importante es el tema de contar el tiempo transcurrido, es lo que le va a dar dolores de cabeza. No es demasiado complicado pero hay que tener en cuenta algunas cosas.

EL tiempo de “Ingreso” como verán se introduce el día y la hora. Esto es importante ya que si pasamos de un día a otro nos podría generar errores de otra manera. Esta Fecha y Hora se introduce al hacer click sobre ingresar, y se utiliza la función “NOW” que equivale a la formula “AHORA”. Luego de esto hay que darle el formato para ver las dos propiedades, por ejemplo “d-mm-yyyy\ h:mm”. Así obtenemos lo que se ve en la imagen. En este caso utilizamos un código pero se puede directamente utilizar como valor fijo en esta celda y luego copiar en el momento que se pulsa cerrar.
Por otro lado para Excel la fecha y hora están representadas por un número. Este número es consecutivo para nuevas fechas y horas por lo que nunca se repite.

Por ejemplo para la fecha y hora de la imagen sería el número “43269,9481712963”. Es por eso que si restamos un momento a otro momento tomado luego de un tiempo tendremos los datos que necesitamos, horas y minutos.


Ahora como ven en la imagen, al momento de presionar cerrar obtenemos el resultado, los minutos transcurridos. Esto es aplicar solo una fórmula de resta y darle el formato de hora.


Bueno, ahora vamos a ver algo del código. En su mayoría todo se hace como ya muchas veces vimos, se hace graba una macro mostrando al sistema cómo queremos que se hagan las cosas, en este caso es muy simple, solo copiar  y pegar. Nosotros para hacerlo un poco más eficaz o académico a veces mostramos otro camino pero se llegaría a lo mismo.
El formato que le damos nosotros es una idea que se nos ocurrió pero hay muchas formas de hacerlo con el mismo concepto, todo depende de nuestra creatividad. No se atasquen pensando que es la única forma, háganlo con lo que Uds quieren y necesitan.

Código:
En este como en todos nuestros proyectos tratamos de utilizar toda la versatilidad de Excel y es por eso que siempre que podamos usar formulas lo hacemos ya que es lo más fácil y cuando nos quedamos cortos con eso pasamos a las macros. Y por último cuando es ya muy avanzado recién pasamos a utilizar código puro. Esto último casi nunca sucede para un uso normal.

La idea general de esto es cuando introducimos la placa en el lugar correspondiente copia los datos a la hoja “Parking” como habíamos visto. Y luego para mostrar los datos ya introducidos anteriormente lo hacemos mediante fórmulas que están constantemente en la hoja recibo. Esta fórmula es un simple “buscarV”. No vale la pena explayarnos con eso ya que lo vimos muchas veces. Solo vamos a mostrar el código de los tres botones más importantes de la aplicación, es decir “Ingresar, Cerrar y Liberar”.

También el código introducimos una regla mediante fórmulas contar en las hojas “Parking y Acumulado” para que no se puedan repetir el número de orden o de ticket. De esta manera cada entrada es única. En otros artículos lo llamamos “Id único”. Cada dato introducido en una base de datos de acumulación debe ser único e irrepetible y debe ser identificado con un único valor.

----INICIO CÓDIGO-----
Sub Ingresar()
Range("E10").Value = Sheets("Parking").Range("h3").Value + 1
Sheets("Parking").Range("B" & Range("G10").Value + 5).Value = Sheets("Recibo").Range("E10").Value
Sheets("Parking").Range("D" & Range("G10").Value + 5).Value = Sheets("Recibo").Range("E13").Value
Sheets("Parking").Range("E" & Range("G10").Value + 5).Value = Now 'pongo la fecha y hora de ingreso
End Sub
-----
Sub Cerrar()
Sheets("Parking").Range("F" & Range("G10").Value + 5).Value = Now 'pongo la fecha y hora de cierre
Lines = Sheets("Acumulado").Range("I3").Value + 5
Sheets("Acumulado").Range("B" & Lines).Value = Date ‘introduzco la fecha
Sheets("Acumulado").Range("C" & Lines).Value = Sheets("Recibo").Range("E10").Value
Sheets("Acumulado").Range("D" & Lines).Value = Sheets("Recibo").Range("G10").Value
Sheets("Acumulado").Range("E" & Lines).Value = Sheets("Recibo").Range("E13").Value
Sheets("Acumulado").Range("F" & Lines).Value = Sheets("Recibo").Range("E16").Value
Sheets("Acumulado").Range("G" & Lines).Value = Sheets("Recibo").Range("E19").Value
Sheets("Acumulado").Range("H" & Lines).Value = Sheets("Recibo").Range("I19").Value
Sheets("Acumulado").Range("I" & Lines).Value = Sheets("Recibo").Range("E22").Value
End Sub
----
Cuando libero limpio todos los campos.
----
Sub Liberar()
'Sheets("acumulado").Range("I1").Value = Sheets("acumulado").Range("I1").Value + 1
Sheets("Parking").Range("B" & Range("G10").Value + 5).Value = ""
Sheets("Parking").Range("D" & Range("G10").Value + 5).Value = ""
Sheets("Parking").Range("E" & Range("G10").Value + 5).Value = ""
Sheets("Parking").Range("F" & Range("G10").Value + 5).Value = ""
Range("E13").Value = ""
Range("E10").Value = ""
Range("G10").Value = ""
Range("E13").Select
End Sub
----
Por ultimo vemos el código con el evento doble click ya visto en otras ocasiones.
----
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("L3:O28")) Is Nothing Then
Range("E10").Value = Sheets("Parking").Range("B" & ActiveCell.Value + 5)
Range("E13").Value = Sheets("Parking").Range("D" & ActiveCell.Value + 5)
Range("G10").Value = ActiveCell.Value
Range("E13").Select
End If
End Sub

----FIN CÒDIGO---
Como dijimos este código no tiene nada de novedoso, aún así lo incluimos para que lo puedan ver.

Reflexión Final:
Las herramientas y recursos están disponibles siempre pero a veces solo hace falta una idea y un poco de creatividad e ingenio. Alentamos a la gente a que no se limite y pueda empezar a crear sus proyectos. Quizás no hay que empezar con proyectos tan complejos pero si viendo cómo solucionar los pequeños problemas cotidianos, en la casa, oficina, trabajo, emprendimiento o dónde estemos. 
Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas y también la Tienda Si tienen alguna duda o consulta pueden hacerlo a través del formulario de Contacto.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         Control de Estacionamiento en Excel
·         Parking Access Control with Excel
·         Parking Access and Revenue Control
·         Parking Access Control Systems
·         Sistema de cobro dinero estacionamiento Parquear parqueo aparcar

1 comentario:

EF Elysian dijo...

Amigp me puedes pasar el arhivo de excel a mi correo no me funciona el link me urge :'v emanueldereyes@gmail.com