Vamos a ver en este post como nos quedaria la programación del formulario de clientes con todas las moficicaciones que hemos realizado, por tanto, veremos de nuevo todo el código decada uno de los eventos susceptibles de cualquier cambio que hayamos realizado.

Aclaración: Todas las variables se declararán como públicas en un módulo a parte.
Además todos los procedimientos que esten precedidos por la palabra Call serán tambien declarados en un módulo a parte como públicos. Todo esto lo iremos viendo a lo largo del post, por lo que recomiendo que antes de comenzar a hacer nada, se lea todo atentamente para que no haya ningunda duda.

Primero vamos a crear una carpeta llamada Imagenes Clientes dentro del directorio raiz de nuestra apliacion, es decir en la carpeta donde tenemos el archivo de macros.

Macros desde cero. Post 15. Formulario de Clientes. Completo

Acto seguido veremos como nos queda el formulario de creación de plantillas y nos centraremos en el botón para crear nuestro libro declientes.

visual

Haciendo doble clic en el boton de crear plantilla de cleintes, nos saltará el evento clic del botón en cuestión, donde programaremos lo siguiente.

aplicaciones

En el evento clic de este botón hay varios llamados a procedimientos programados en otros modulos y una variable a la que se le asigna una ruta.

Veamos primero los procedimientos Comenzar_Macros y Finalizar_Macros, declarados en el Modulo Macros_Comunes.
Estos dos procedimientos serán llamados siempre que se empece a programar un procedimeinto o se finalice la programación del mismo.
Veamos estos dos procedimientos.

macro

Ahora vamos a ver la programación del procedimiento que utilizamos para crear el libro que vamos a llamar Plantilla de Clientes.xlsx

Basic

formularios

Bueno chicos ya estamos casi casi acabando, vamos ahora a ver como nos queda el formulario de clientes que vamos a utilizar para introducir los datos en la plantilla creada anteriormente.

modulos

Describamos un poco estos textbox:
Todos ellos excepto el correo electrónico, admitiran solo mayúsculas y por otro lado describamoslos según sus nombres:

Txt_Nif: Texto.
Txt_Nombre: Texto
Txt_Direccion: Texto
Txt_cp: Este solo admite números será el código postal
Txt_poblacion: Texto
txt_provincia: Texto
txt_email: Texto solo minusculas
Txt_telefono: Solo admite números.
Txt_Fax: Solo admite números.
Txt_Observaciones: Textbox sin restricción podemos escribir cualquier valor y además puede ser en mayusculas o minúsculas. Este textbox Tiene la propiedad Multiline en True.

Por lo que respecta a los botones: Tipo de Letra Arial tamaño 11
Cmb_Dar_de_alta: Para registrar nuevos clientes.
Cmb_Dar_de_baja: Para eliminar clientes.
Cmb_Modificar: Nos permite modificar los datos de un cliente.
Cmb_Facturar: Nos permitirá crear facturas, albaranes y presupuestos para un cliente. Este botón lo programaremos más adelante. Por el momento vamos a dejarlo de lado.
Cmb_Guardar: Nos permitira guardar los cambios generados en los datos de un cliente, es decir, guardará los cambios en los datos de un cliente una vez modificados.
Cmb_Cancelar: Cierra el formulario.
Img_Cliente: Mostrará la foto del cliente cuando lo busquemos.
Su propiedad PictureSizeMode la dejaremos en FrmPictureSizeModeStrech para que muestre la imagen completa.

Vamos a Ver ahora las variables y procedimientos que se van a utilizar en nuestro formulario.

excel

Vamos ahora con los procedimientos que llamaremos desde el codigo de nuestro formulario cuando sea necesario:

2007

macros

VBA

Macros desde cero. Post 15. Formulario de Clientes. Completo

Muy bien, en esta ultima imagen vemos un procedimiento que vacia todas las variables excepto la del Codigo_postal que toma el valor cero ya que está es un variable numérica y no puede tomar el valor de cadena vacia.

Bien si hemos llegado hasta aquí, tendremos un formulario con todos lostexbox desactivamos excepto el textbox del NIF y con todos los botones desactivados excepto el de cancelar.

Con esto, haremos lo siguiente, cuando nostros introduzcamos un valor en el txt_nif, y pulsemos intro, buscará el dato en la plantilla de clientes y hara lo que corresponda.

Veamos el codigo del Txt_Nif en su evento Keydown:

visual

Justo despues del loop y a continuación de pasar los datos de las celdas a los botones y justo antes de activar los botones, vamos a llamar al procedimiento para cargar la foto de nuestro cliente. Eso lo haremos de esta manera:
Call Cargar_Imagen_Clientes. Este procedimiento no aparece en la siguiente imagen

aplicaciones

macro

Bien, veamos ahora la programación de los eventos change de cada uno de los textbox de nuestro formulario de clientes y el evento Activate del formulario.

Basic

formularios

modulos

excel

Bien ahora ya estamos acabando. Vamos a ver por fín la programación de cada uno de los botones de dar de alta, dar de baja, modificar, guardar y cancelar.
Recordar que el botón de facturar, vamos a programarlo más adelante.

Comenzamos:

Botón para dar de alta:

2007

macros

VBA

Botón para dar de baja:

Macros desde cero. Post 15. Formulario de Clientes. Completo

visual

aplicaciones

Botón modificar:

macro

Botón guardar:

Basic

formularios

modulos

excel

2007

macros

VBA

Boton Cancelar:

Macros desde cero. Post 15. Formulario de Clientes. Completo

Y ahora vamos a hacer unos pequeños ajustes en nuestra programación.
Vamos a crear en el modulo Macros_Clientes un nuevo procedimiento que será el siguiente:

visual

En el evento keydown del Txt_Nif, nos vamos a ir a la parte donde hemos programado entre el Do y el Loop y vamos a modificarlo justo donde se encuentra el msgbox de la pregunta de si queremos agregar un cliente ahora y dejamos la programación tal cual está la parte azul.

aplicaciones

En este mismo evento, nos situaremos justo despues del end select, y añadiremos las lineas que se encuentran coloreadas de azul.

macro

Esta ultima imagen con ese elseif, consegimos que, si nosotros pulsamos escape y la tecla de retroceso, la de borrado, se borra el nif completo de forma que así se restablece el formulario al estado inicial.

Por otro lado vamos a cambiar la ceda en la que finalizar la busqueda.

Para ello en el mismo evento keydown del Txt_Nif, cuando abrimos el archivo y activamos la hoja de listado de clientes, vamos a añadir una linea en la que asignamos a la variable Ultimo_Dato el número de la ultima fila que contiene datos, es decir el número de la ultima fila que esta ocupada. Añadiremos la linea que esta marcada en azul.

Basic

Muy bien una vez hecho esto, bajamos un poco y volvemos a la programación que tenemos entre el Do y el Loop.

Aquí vamos a cambiar la condicional, en lugar de decirle que si encuentra una fila vacia, pregunte si queremos agregar un cliente, vamos a decirle...

Si el número de la fila de la celda activa es un el numero de la ultima fila que contiene datos +1 entonces que pregunte. Por ejemplo, si tenemos clientes hasta la fila 50, la condicional seria...
Si el numero de la fila es la 51 entonces pregunta si queremos agregar un cliente.

Esto lo hacemos porque nostros vamos a buscar en toda la lista y quiza puede llegar un momento que por algun motivo, haya filas vacias por el medio de la lista por lo que entonces no buscaria en toda la lista, solo buscaria hasta que encuentra una fila vacia.

Vamos a ver entonces como quedaría esa linea del If, la cual esta remarcada en azul.

formularios

Bien amigos, con estas modificaciones, hemos finalizardo nuestro formulario de clientes.

Nos falta como podeis comprobar el Boton de facturar, el cual programaremos más adelante.
Por el momento, nos veremos entonces en el siguiente post.

P.D. Adelantaros que se está preparando una guía totalmente completa y en español donde podreis leer con más detalle y mas profundamente todo lo que estamos publicando en estos post de manera general.

Además también se publicará el curso en videos explicativos de de un maximo de duración de 60 minutos cada uno.

Nos vemos en el siguiente post.