Saltar al contenido

Ayuda sobre función extraer relacionada con Macros


Recommended Posts

publicado

Buenos días ,

Llevo días atascado en un problema relacionado con la función extraer datos. Tengo un nivel de excel muy básico así que cualquier ayuda será de mucho agredecer.

La cuestión es que he creado una base de datos excel para gestionar las entradas y salidas de un párquing. El funcionamiento es simple pero eficaz. Se introduce el número de tarjeta o id del conductor y mediante la fórmula extraer se recuperan el resto de datos suyos que le identifican a él y su vehículo (fotografía, nombre, cargo, matrícula del vehículo, marca, modelo, etc), de modo que te indica que está autorizado. En caso contrario, aparece la indicación no autorizado.

Estos datos a su vez se copian mediante una macro en otra hoja excel donde quedan todos registrados (día y hora de entrada, usuario, matrícula etc).

El problema es que algunos usuarios tiene autorizados hasta tres vehículos distintos (personal, el de la pareja, moto..). Es decir, que en la matriz de los datos tienen informados vehículo 1, vehículo 2 y vehículo 3.

Actualmente al ingresar su id, se recuperan únicamente los datos del vehículo 1, con lo cual no es eficaz si ese día el usuario acude al párquing con el vehículo 2 o 3.

Lo que necesitaría es que, cuando ingrese la id, apareciera en la celda un desplegable con los 3 vehículos de forma que pudiera escoger cuál es el que se corresponde.

En la matriz he conseguido poner en la misma celda los vehículos en un listado, pero cuando me extrae los datos únicamente me recupera el principal, no la lista entera.

Si en el momento de ingresar la id sólo aparece el vehículo principal, cuando se copian los datos de la entrada mediante la macro, únicamente se registra el vehículo 1.Por tanto, si ese día el vehículo es el 2 o el 3 el registro no es correcto.

Adjunto el libro por si puede ayudar.

Soy plenamente consciente que está lleno de errores pero soy muy novato. image.gif.d73ade1a04132a61f3b216d7326c1e3e.gifDe hecho, estoy seguro que las macros creadas, para los que entendéis, os van doler a los ojos (seguramente digo en 10 línias de código lo que se podría resumir en 1.., entre tantas otras aberraciones.. però bueno.. poco a poco. 

Muchísimas gracias de antemano, cualquier pequeña ayuda o idea será de mucho agredecer!

Saludos,

David

BD PARQUING.xlsm

publicado

¿Y porqué no ingresas la matrícula directamente en lugar del ID o Tarjeta?

Déjame que piense una alternativa a lo que tienes.

publicado

Hola Antoni, 

El tema de la matrícula es una una idea interesante, pero no resulta del todo práctico por un tema operativo. Tal y como está diseñada la entrada del parking, lo más rápido y cómodo es introducir el número de la tarjeta que el conductor muestra al entrar. En caso que se la haya olvidado está la opción de la ID. Es complicado visualizar la matrícula directamente desde la garita donde se lleva a cabo el control. 

Muchas gracias por tu ayuda! 

publicado

Buenas JSDJSD! 

Vaya, esto es ya otro nivel! La idea es esa sí, por lo que deduzco que debería cambiar todo el sistema, verdad?? ?

Gracias a ti tambíen por la atención! 

publicado

No te preocupes luego te comparto el archivo y haces uso de el, haces las pruebas correspondientes y comentas , pero verás cuando el Maestro Antoni suba su propuesta seguro nos deja con la boca abierta a todos.

 

publicado

Madre mía que envidia me dais! 

Sigo atento, voy viendo qué es lo que mejor se me adapta y os voy comentando sobre la marcha!

Mil gracias!!

 

 

publicado

Sres. moderadores, el tema se ha dado por solucionado y no lo está. 

Corregir por favor el estado de la consulta. ?

publicado

Aquí te dejo el archivo prueba y consulta. Las imágenes las tienes en la carpeta img que debes tenerla en el mismo sitio que tengas el excel, es decir si el archivo lo tienes en el escritorio pues la carpeta también debes tenerla en el escritorio.

BD PARQUING Prueba 1.xlsm img.rar

publicado

Y no olvides nunca agradecer a quien te ayuda o intenta ayudar y en este foro la manera de agradecer es mediante el corazoncillo que hay en la parte inferior derecha.

Agradecimiento.gif

publicado

Muchas gracias a los dos! (Ahora ya sé que tengo que darle al corazoncito :) 

Mañana en el trabajo lo pruebo JSD JSD, que aquí en casa con la versión del Mac no me va muy bien!

Antoni con gusto esperé tu aportación. Ojalá pudiera encontrar un modo para mantener la base de mi propuesta (que desde mi ignorancia me costó lo suyo jeje). 

Estamos en contacto! 

 

publicado

Madre mía, me acaba de dar un vuelco al corazón! Es perfecto! y funciona!!

Muchísimas gracias por la aportación Antoni

Puedo preguntar cuál es más o menos el sistema para que funcione de este modo? Y ya puestos a preguntar, se puede editar el formato del formulario que sale para seleccionar la matrícula o hacer para que salga ubicado en una esquina de la pantalla?

Ya empezaba a ver la luz con la aportación de JSD JSD, al cual le sigo estando muy agradecido, pero ahora mismo..

¡Estoy emocionado!

 

publicado

Cada vez que informas el TIP o la TARGETA se hace una búsqueda en la hoja USUARIS y se muestra en el formulario USERFORM1. Te he colocado el formulario a la derecha en la parte superior.

Esta es la macro que controla el tema y como tu comprenderás hace falta un nivel intermedio de VBA, que me da a mi que tu todavía no tienes. Hay varios manuales/tutoriales gratuitos en internet. Te dejo uno de ellos:

 Manual de VBA

Private Sub BuscarDades(Target As Range, Columna As Range): On Error GoTo EXITSUB
Dim Usuari As Range

Range("K10") = ""
Range("K12") = ""
Range("K14") = ""
Range("K16") = ""
Range("K18") = ""

Set Usuari = Columna.Find(Target, , , xlWhole)
If Not Usuari Is Nothing Then
   If Usuari <> "!" Then
      With UserForm1
         .Move Range("L1").Left, 0 '------- Controla la posición del formulario
         .TextBox1 = Sheets("USUARIS").Range("A" & Usuari.Row)
         .TextBox2 = Sheets("USUARIS").Range("D" & Usuari.Row)
         .TextBox3 = Sheets("USUARIS").Range("E" & Usuari.Row)
         .TextBox4 = Sheets("USUARIS").Range("F" & Usuari.Row)
         .TextBox5 = Sheets("USUARIS").Range("G" & Usuari.Row)
         If Sheets("USUARIS").Range("H" & Usuari.Row) <> "" Then .ListBox1.AddItem Sheets("USUARIS").Range("H" & Usuari.Row)
         If Sheets("USUARIS").Range("I" & Usuari.Row) <> "" Then .ListBox1.AddItem Sheets("USUARIS").Range("I" & Usuari.Row)
         If Sheets("USUARIS").Range("J" & Usuari.Row) <> "" Then .ListBox1.AddItem Sheets("USUARIS").Range("J" & Usuari.Row)
         .ListBox1.ListIndex = 0
         .Show
      End With
   End If
End If
EXITSUB:
End Sub

 

BD PARQUING (1).xlsm

publicado

En efecto mi nivel es muy de principiante. De hecho no alcanzo a ver dónde está tu macro dentro del excel :-/ ni cómo acceder al formulario..

Tomo nota de tu link y me pongo las piles para aprender bien de inicio.

Dime, ¿cómo puedo agredeceros vuestra ayuda?

publicado

Te dejo mis últimas dudas al respecto:

1.¿ Se podría ser que este mismo formulario de selección de matrícula solo emergiera en los casos que hay varias matrículas informadas y no apareciera en aquellos que solo hay una? (para dar mayor fluidez ya que la mayoría solo tienen un vehiculo).

2. ¿Cómo puedo ubicar el formulario en una zona concreta de la pantalla?

3. Cuando aparece el formulario con las varias matrículas, ¿sería possible que en el formulario solo aparecieran las matrículas para seleccionar y el resto de datos (nombre, cargo, etc) aparecieran directamente en las casillas de la pantalla?

Tal vez es mucho pedir y no quisiera abusar tus conocimientos.. pero es que estre pequeño proyecto personal lleva muchas hores de novato detrás y mucha ilusión.

Me habéis dado el empujón que me faltaba empezar a formarme como diós manda!!

 

 

publicado

Madre mía! Esto es ya nivel sensei! Increíble!!

Por cierto, si protejo la hoja no me permite que emerja el formulario verdad?

Muchas muchas gracias! De verdad!! Lo único que me queda por decir que es si pasas por Bcn alguna vez me lo hagas saber que tienes una comida pagada!!

 

 

 

 

publicado

Buenas tardes,

Antoni disculpa que te moleste de nuevo,

En este última modificación que me pasaste, tengo un problemilla, y es que tres seleccionar entrada o salida, no se borran los datos del usuario que se han importado.

No he sabido verlo en tu macro para subsanar eso.. :(

Por cierto, hay posibilidad de proteger la hoja y que siga saltando el userform? Es que si le doy a proteger para que no se modifiquen las celdas por error entonces no me sale..

Gracias de nuevo!

 

publicado

Increíble! Veo que no hay nada que se te resista :)

Lo único que con esta modificación el "NO AUTORIZADO" me sale en blanco en lugar de rojo como antes, pero ya no pido más :)

Mil gracias por toda tu ayuda y colaboración, y lo dicho, si pasas alguna vez por Bcn recuerda que tienes una comida pagada ;-)

 

publicado
Hace 1 minuto , DavidBF dijo:

A

En 12/5/2020 at 13:16 , Antoni dijo:

 

 

Hace 1 minuto , DavidBF dijo:

Apreciado Antoni, 

La cuestión es que estoy a un par de pasos de poder terminar ese pequeño proyecto que emprendí hace ya mucho,  pero pese las horas invertidas no logro desatascarme (de inicio pensé que me resultaría más sencillo pero claro está que se me ha complicado la cosa para mi escaso nivel). 

En relación a tus magníficas aportaciones, te comento lo siguiente, a ver si me puedes echar un último cable: 

1) NO logro indicar que cuando el vehículo no está autorizado me aparezca en fondo rojo (sólo consigo hacerlo si quito la protección de la hoja). 

2) Algunos usuarios en su número de TIP combinan letras y números. Ejemplo: AD1213. En estos casos, la búsqueda me la hace correctamente pero luego a la hora de copiar el registro de entrada o salida me salta un ERROR, y no consigo corregirlo. 

3) Para dar un poco de seguridad, es factible ubicar la hoja de "USUARIS" en otro libro, y éste a su vez guardarlo en una Unidad de red donde los usuarios no tiene acceso directo desde su perfil,? Podría la macro igualmente extraer los datos de allí para seguir funcionar correctamente? 

Perdona por molestarte en tantas ocasiones, tras este pequeño proyecto prometo empezar de 0 y formarme como Diós manda. 

Independientemente que me puedas seguir ayudando o no, si puedo compensarte de algún modo sólo tienes que decírmelo. 

Una vez más, muchas gracias!!

David. 

 

Hace 1 minuto , DavidBF dijo:

 

 

publicado

Por supuesto! Disculpa pero es que como estaba el tema como resuelto no sabia si llegaba el mensaje :rolleyes:

1) El tema del color ya detecté la incidència, era un error tipográfico en que en lugar de "NO AUTORITZAT" puse " NO AUTORZIAT".

2) El segundo tambíen está resuelto. Cambié el formato de "As Long" por "As String".

3) Al tercero ya no llego..

Gracias por todo, sin nigún tipo de prisa espero a ver si le puedes echar otro ojito..

Saludos,

David

 

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.