Saltar al contenido

extraer ID con búsqueda de dos textbox


Recommended Posts

publicado

Buenos días,

Muchas gracias de antemano por su ayuda.

Tengo un problema (además de saber mas bien poco de macros) y es que me gustaría en un formulario USERFORM de excel extraer un valor de identidad único por cliente según se meta el numero de teléfono o el mail en 2 textbox que hay para ello.

La lógica es la siguiente: 

1.- Ingresamos un mail en textbox TEXT_MAIL_CLIENTE y nos debe aportar el ID del cliente denominado TEXT_NUMERO_CLIENTE

2.- Ingresamos un telefono en textbox TEXT_TELEFONO_CLIENTE y nos deberia aportar el ID del cliente denominado TEXT_NUMERO_CLIENTE si el resultado de este ultimo y el anterior coinciden.

Si no tenemos MAIL o TELEFONO que ingresar el mejor resultado "esperable" será el ID del que hayamos introducido.

La complicación añadida que veo es si al poner un mail y telefono el resultado de la busqueda son 2 referencias distintas, por tanto se tendra que abir otro listbox (o mecanismo, no se me ocurre ninguno mas) para elegir de forma "manual" el cliente.

Y si ingresado el mail o el telefono o ambos y no encuentra ID pues que se genere un nuevo cliente.

Disculpen la petición porque se que es complciada pero confio en sus conocimientos y es el ultimo recurso que me queda.

Cualquier aclaración adicional a su servicio por supuesto.

Adjunto archivo excel con lo desarrollado hasta ahora.

El formulario que necesito configurar es el denominado BUSCADOR_PRODUCTOS y las tablas estan en las pestañas excel CLIENTES para buscar telefono, mail y entregar numero ID del cliente.

Un saludo

 

 

 

Copia de Control FRUTO SAMORE v2.9.1.xlsm

publicado

@FrutoSamore , no entiendo tu propuesta, y menos viendo el formulario.

  • Por un lado NO deberías tener clientes duplicados ¿No?
  • Por otro, lo que entiendo es que quieres buscar por e-mail o teléfono y que te busque todos los datos del cliente ¿No?
  • Por otro ¿Porqué buscar por dos campos, si los clientes deberían ser únicos? Me temo que los tienes duplicados ¿O no? :huh:

 

publicado

Hola José, muchas gracias por tu interés.

Sinceramente no me extraña lo que dices de que es ininteligible. El tema es que los clientes que recibimos quiero asignarles un ID salvo que ya tengan dicho ID creado. Como son clientes que repiten ocasionalmente les solicitamos su mail y teléfono (trabajamos con woocomerce que seguro lo conoces) y es el único elemento con el que los podemos identificar (que a mi se me ocurra) y como 2 de cada 3 veces ponen mal el mail o el teléfono (este ultimo menos) me gustaría comprobar ambos 2. 

Si teléfono ya esta registrado (y por tanto el cliente tiene ya ID) la macro me debería entregar ese ID, hasta ahí bien. Y como doble chequeo me gustaría utilizar el mail. Si tengo un mail y un teléfono que cada uno entrega distinto ID deberé hacer una revisión manual.

Y si no esta en la bb.dd. ni el mail ni teléfono significa que de todas todas es cliente nuevo y se deberá asignar un ID de nuevo cliente correlativo al ultimo registrado.

Es un alta o seguimiento de cliente "semiautomatico" vaya.

Y respecto a tus preguntas, no, no debería tener clientes duplicados por eso doble chequeo movil y mai.

Tu segunda pregunta no es exactamente lo que busco, busco el ID para asignarle el pedido que realice, modifique los datos del cliente o sacar cualquier dato ya si, desde el ID que me da mas confianza con los chequeos comentados antes que desde un telefono o mail. te sorprendería la cantidad de gente que se "equivoca" en el mail o teléfono y eso que es para recibir entregas de lo que han pedido.

Tu tercera pregunta creo que mas o menos te la he contestado con todo el desarrollo, básicamente porque hay mucho error como para fiarme un solo campo y asignar el pedido a un cliente que luego no resulte ser eso. 

En todo caso, si existe una manera mas sencilla, o simple que siempre suele ser mejor encantado de implementarla. Pero creo que esta era la mas fácil a nivel lógica, Telefono y mail como doble chequeo de la concordancia del cliente, a nivel programacion para mi no desde luego. 

Muchas gracias de nuevo y espero haberme explicado mejor ahora.

Respecto a como esta configurado el segundo formulari, lo estaba usando para ver si era capaz de hacer todo lo dsecrito en un paso anterior, etc... pero me gustaria dejarlo todo programado en el formulario "BUSCADOR_PRODUCTOS" que evidentemetne ha evolucionado a un todo en uno y deberia cambiarse el nombre.

Un saludo.

publicado

@FrutoSamore , vamos por parte porque tiene miga... :lol:

De momento te dejo el fichero con la opción solo de buscar teléfono.

  • Verás que te he duplicado un teléfono en la tabla. Busca por él y te saldrá un mensaje ¿A partir de ahí que harías?
  • Busca por un teléfono no duplicado, en esgte caso te pone el ID en su casilla. Supongo que ahora se buscaría el e-mail ¿No?
  • Busca por uno que no exista. Te saldrá otro menasje ¿Ahora qué harías?

Copia de Control FRUTO SAMORE v2.9.1.xlsm

publicado

Gracias Jose.

Voy por partes, porque si me dices que tiene miga imposible que lo sacara yo con mis conocimientos.

Pregunta 1: Duplicados no deberían salir cuando este OK, porque al encontrar un teléfono que ya existiera daría la ID como en el caso 2. 

Después de que te de el ID, buscaríamos el siguiente parámetro que es el mail para ver si la ID coincide. En caso coincida, bingo! esta todo bien y tenemos ID univoca para procesar pedido.

Pregunta 2: En caso no coincida ID del teléfono con el mail pues a selección manual mediante una listbox imagino de entre los posibles titulares de ese teléfono y mail.

O puede darse que teniendo bien el teléfono y por tanto un ID, el mail indicado en textbox no existiera en los registros (porque anteriormente no se informo, así que este mail se debería incorporar al registro del ID en la columna mail de la pestaña clientes para la fila del ID conseguido a través del teléfono.

Pregunta 3: Si no existe teléfono, revisamos mail. Si existe mail la ID es la del mail e incorporamos el teléfono. Como en el anterior caso pero al revés. Si no existe mail ni teléfono pues cliente nuevo y una ID correlativa a la ultima registrada.

Y muchas gracias de nuevo. Espero haber explicado medianamente la lógica... 

Un saludo.

 

publicado

Hola Jose, pues lo siento. Voy a ver si esto es mas especifico:

Cita

Verás que te he duplicado un teléfono en la tabla. Busca por él y te saldrá un mensaje ¿A partir de ahí que harías?

¿tendrían dos ID no? pues tenemos que conseguir quedarnos con uno.

Respuesta a tu pregunta -> Fusionar los campos de ambas filas y el primer teléfono pararlo a un "telefono 2 o adicional", el ultimo es más reciente

Cita

Busca por un teléfono no duplicado, en este caso te pone el ID en su casilla. Supongo que ahora se buscaría el e-mail ¿No?

Correcto. (a ver si con el mail da el mismo ID u otro diferente)

Cita

Busca por uno que no exista. Te saldrá otro mensaje ¿Ahora qué harías?

Buscar mail para ver si tampoco existe. (y que me genere nuevo ID)

 

*** Y muchas gracias de nuevo. Espero que esto sea mas concreto. Ya he aprendido como necesitas respuestas.

Un saludo.

publicado
Hace 22 horas, FrutoSamore dijo:

Respuesta a tu pregunta -> Fusionar los campos de ambas filas y el primer teléfono pararlo a un "telefono 2 o adicional", el ultimo es más reciente

Cada vez entiendo menos tu problema... ?. Hablabas de errores, pero ahora parece que es problema de duplicación. ¿No sería mejor realizar primero una limpia del archivo y no andar con todos esos jaleos?

publicado

Hola Jose, no es error ni problema de duplicados existentes. (pues la BBDD esta por construir como has podido ver en el archivo enviado).

El caso es que mañana se peude dar el caso (y nos sucede a menudo) que un mismo usuario (cliente) facilita un movil distinto. Es sencillo.

Pero por intentar resumir el comienzo del problema que tenia, vuelvo a comentar lo necesario y ver si consigues dar con la solucion, pues yo te adelanto que incapaz en cuanto a programación. La lógica a desarrollar no me parece dificil.

 

Se trata de rellenar un formulario con 2 textbox (telefono y mail principalmente) y a traves de estos textbox conseguir un numero ID único.

Situaciones que podrías darse al rellenar textbox:

No se encuentra teléfono ni mail en BBDD. ALTA nuevo cliente con su asignación del ID. correlativa al ultimo registro.

Teléfono y mail se encuentran en la base de datos y además en la misma fila, pues ese ID.

Teléfono localizado y mail no localizado: Pues el ID de registro localizado por móvil.

Mail localizado y teléfono no localizado: Pues el ID de registro localizado por mail.

Teléfono localizado y mail localizado, cada uno con distintos ID. Pues selección manual del registro que se considere acertado.

 

Siguiendo estos pasos no debería existir ningún teléfono duplicado ni mail ni ID.

Si crees que debe hacerse de otra forma, genial. Lo importante es que cada vez yo ingrese teléfono y mail (doble check) consiga un único registro valido.

Y muchas gracias de nuevo. Si crees que estoy pidiendo una locura te agradecería me lo dijeras para pensar en otras soluciones. 

Un saludo y buen finde.

publicado
Hace 41 minutos , FrutoSamore dijo:

El caso es que mañana se peude dar el caso (y nos sucede a menudo) que un mismo usuario (cliente) facilita un movil distinto. Es sencillo.

Es que en función de esto, pueden aparecer algún que otro caso más...

  • Teléfono repetido con distintos ID
  • E-mail repetido localizado con distinto ID
  • Y alguno más que ahora no me viene...

Y ahora digo yo, si la base de datos está por crear ¿No sería más fácil ir metiendo clientes, BUSCANDO SIEMPRE por nombre y apellido?, que deberían ser únicos ¿No?

Si el cliente (nombre/apellido) ya está en la base y ha dado otro teléfono o e-mail,pues adjuntar a ese cliente. Creo que sería todo mucho más sencillo. ¿No crees?

publicado

Hola de nuevo, Jose.

Sobre tus cuestiones comento algunos puntos para aclarar y a ver si eres/somos capaces de darle salida a esta macro.

Teléfono o mail repetido con distinto Id no habrá porque cada vez que ingrese un teléfono o mail ya repetido traerá el Id de ese cliente.

Al final incluyo un resumen de las "funciones" de la macro. Intuyo (no estoy seguro) que sera combinar constantemente el registro textbox para extraer otras variables (IdTelefono y IdMail) que a su vez se comparen para tomar la decisión final.

Lo de nombres y apellidos fue la primera en pensarse pero ¿cuantos martinez hay? y ¿garcia? y "Josés"? Siempre habria alguna repetición... creemos que un dato mas "identificativo" hoy en día son telefonos y mail. Y el DNI no podemos pedirlo en un proceso de compra, es demasiado freno a la venta.

Muchas gracias y espero que ya con esto quede mas aclarado todo, porque no se me ocurre otra cosa mas "vistosa" que el cuadro excel que paso en esta respuesta.

Un saludo.

Voy a poner aquí la combinatoria posible:

BASE DATOS EXISTENTE
Telefono mail ID
698769879 ejemplo3@pepe.com 3
655655655 ejemplo1@pepe.com 1
632163216 ejemplo2@pepe.com 2

 

CONSULTA MACRO (Id es el resultado a dar por la macro)  
Telefono mail ID comentarios
655655655 ejemplo1@pepe.com 1  
632163216 ejemplo2@pepe.com 2  
698769879 ejemplo3@pepe.com 3  
655655655 no tengo 1  
no tengo ejemplo2@pepe.com 2  
68753241 ejemplo57@pepe.com 4 Nuevo ID correlativo al ultimo id generado, no de la lista que puede estar ordenada por otras columnas(3)
655655655 ejemplo3@pepe.com selección manual de entre los registros 1 y 3 deberemos elegir uno atendiendo a otras cosas. Puede ser un error humano del cliente al haber ingresado los datos o nuestro al registrarlos
655655655 ejeplo1@pepe.com 1 Como esta el movil correcto pero no el mail suponemos que es error tipografico del cliente o nuestro. 
655655654 ejemplo1@pepe.com 1 idem al anterior (error tipografico del movil)
publicado

Bueno @FrutoSamore , poquito a poco... es que tampoco tengo demasiado tiempo ?

Te dejo una nueva versión "medio funcional"...

Para los teléfonos:

  • Si está repetido, te sale un nuevo formulario con los datos repetidos, ahí habría que seleccionar el principal. De momento NO COMBINA. Al combinar ¿Se eliminan los no seleccionados? ¿Se juntarían los teléfonos en una únicacelda, no? esto último sería lo más fácil
  • Si existe y no está repetido, coloca el ID directamente
  • Si no existe, te avisa con un MsgBox, pues supongo que deberías meter los datos del nuevo cliente y registrarlo (¿Podría darse otra opción en este caso?

Para los e-mail:

  • Si existe, no está repetido y coincide con el ID del teléfono, pone todos los datos del cliente en el formulario.
  • Si existe y no coinciden los ID, avisa con MsgBox ¿Qué se haría? ¿Esta opción se podría dar realmente?
  • Si el teléfono no existe, se supone que el e-mail tampoco, porlo que este caso de momento no está contemplado¿Es así?

Ves probándo y comenta

 

 

Copia de Control FRUTO SAMORE v2.9.1-2.xlsm

publicado

Hola Jose muchas gracias como siempre. Se que esto lo hacéis de forma voluntaria así que ni se me ocurre "achuchar". Bastante voy a aprender leyendo tu macro. Gracias ya de antemano.

En cuanto al experimento, te cito y comento sobre los casos...

Cita
  • Si está repetido, te sale un nuevo formulario con los datos repetidos, ahí habría que seleccionar el principal. De momento NO COMBINA. Al combinar ¿Se eliminan los no seleccionados? ¿Se juntarían los teléfonos en una única celda, no? esto último sería lo más fácil
    • Funciona lo que indicas. Con que me avise de las filas como hace es suficiente. De momento lo iremos haciendo a mano porque este caso no creo se de mucho. Que un cliente se equivoque o nosotros en el numero y encima este en la base datos.
  • Si existe y no está repetido, coloca el ID directamente 
    • No consigo hacer que funcione. Pongo el numero no repetido y no actúa. 
  • Si no existe, te avisa con un MsgBox, pues supongo que deberías meter los datos del nuevo cliente y registrarlo (¿Podría darse otra opción en este caso?
    • Funciona, si no existe, rellenamos el resto datos y registramos. (la única excepción es que exista el mail que insertemos y por tanto cogería esos datos). Para mayor facilidad los primeros datos que vamos a insertar siempre son telefono y mail claro.

Y sobre los mail:

Cita
  • Si existe, no está repetido y coincide con el ID del teléfono, pone todos los datos del cliente en el formulario.
    • No me funciona, dice que no coinciden ID teléfono y mail. (Cuando funcion, exacto, pone todos los datos en el formulario.). IMPORTANTE: Cuando no tenemos teléfono y solo hay mail nos valdría el ID obtenido a través del mail.
  • Si existe y no coinciden los ID, avisa con MsgBox ¿Qué se haría? ¿Esta opción se podría dar realmente?
    • Debería de abrirse una lista con los "posibles candidatos" y eligiriamos manualmente quien realmente esta haciendo el pedido.Se podría dar en un cliente con mínimo 3 pedidos. 
      • En el primero lo grabamos solo con el mail (seria por ejemplo Id 14)
      • en el segundo lo grabamos solo con el movil (seria otro ID, el 24, porque detecta movil nuevo, ya que no estaba informado en el mail anterior)
      • y en el ultimo nos da ambos telefono y mail. (el resultado serian ID 24 y 14, ¿cual elegimos? pues deberíamos fusionar los datos del id 14 y 24. 
  • Si el teléfono no existe, se supone que el e-mail tampoco, por lo que este caso de momento no está contemplado¿Es así?
    • Podria darse el caso que cuando hicieron el pedido solo aportaron mail.

En nuestro proceso de compra para que te hagas una idea, no necesitamos mail y teléfono obligatorio, solo una de las cosas para poder comunicarnos con ellos. Los envíos, su seguimiento, etc.

Crees que hay alguna manera mas fácil de ordenar esto? Porque a mi también me parece algo jaleoso y lo complicado suele ser la peor de las soluciones.

Y reitero las gracias. Si crees que esto lleva mucho, hay alguna manera de compartirlo con otros foreros para que ayuden y no "pierdas" mucho tiempo en esto. Aunque espero que con la dificultad de lo que estas intentando (y yo estoy pidiendo) consigues algún aprendizaje nuevo. No sé, por no pensar que te hago perder el tiempo totalmente.

Un saludo.

o

publicado
Hace 7 horas, FrutoSamore dijo:

consigues algún aprendizaje nuevo. No sé, por no pensar que te hago perder el tiempo totalmente.

Precisamente se trata de eso ? . Con esto ya he aprendido varias cosas nevas...

publicado

Bueno @FrutoSamore , creo que ya están contemplados todos los casos (?)... Como no he tenido tiempo de probarlo en profundidad, creo que lo mejor es que empieces a usarlo como herramienta ya, y si ves errores o mejoras, vamos trabajando sobre ello, aunque bueno... no estaría de mal que fueses haciendo tus pinitos para las modificaciones que necesites, y si te atascas preguntes ?

    

Copia de Control FRUTO SAMORE v2.9.1-4.xlsm

publicado

Hola Jose,

Que alegría ver que funciona!! Por lo menos algunas cosillas que ya he probado (otras dan algún error que voy a intentar seguir haciendo el pino sin caerme :))

Mil gracias e intentaremos seguir aprendiendo. Voy a empollarme tu macro a ver si la entiendo lo primero y después la consigo digerir.

Cualquier cosa que me atasque descuida que consulto, fue el ultimo recurso que utilice cuando llevaba ya días atascado. Sobrepasaba mis conocimientos con mucho.

Seguiré aprendiendo de vosotros lo máximo que pueda.

Un saludo y cuando la tenga mas menos terminada o con los ajustes necesarios la cuelgo aquí con tu permiso para futuras consultas (con las excel y todo) que esto me parece un must.

Gracias de nuevo!!!

 

publicado
Hace 10 horas, FrutoSamore dijo:

(otras dan algún error que voy a intentar seguir haciendo el pino sin caerme :))

Hombre, después de haber llagado hasta aquí... ?SI es del código mío dímelo 

publicado

Hola de nuevo Jose,

Estoy intentando aprender algo y me pierdo un poco con las instrucciones, pero bueno ahí vamos. De momento el único error que he solucionado es declarar 2-3 variables. Seguro que se te pasó porque no estaba como explicit y no te daría el error.

De las pruebas que he hecho solo tengo el siguiente comentario:

  • Si no hay ID asociado ni a teléfono ni a mail (bien sea porque no esta en la BBDD o porque no se informa) debería de dar un ID correlativo al mayor de los que ya existan en la base datos. (para luego grabar el cliente como nuevo y ese ID).

De momento con eso avanzo algo mas, mas adelanta cuando este todo OK seguro que volveré acudir en vuestra ayuda si me lo permitís para mejoras que surjan y no sea capaz de desarrollar.

Un saludo y gracias de nuevo por vuestro tiempo.

 

publicado
Hace 11 horas, FrutoSamore dijo:

Seguro que se te pasó porque no estaba como explicit y no te daría el error.

Es que programar y depurar con "Option Explicit" es muy complicado ? He intentado poner todas las variables, si no te tocará volver a declararlas.... Ya está solucionado lo del ID nuevo. Lo pone TRAS poner el e-mail, que no exista y que tampoco exista el teléfono (ID vacío)

 

Copia de Control FRUTO SAMORE v2.9.1-5.xlsm

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.