Archivo de la categoría: Formularios

SELECCIONAR ITEMS COMBOBOX MEDIANTE BOTONES

SELECCIONAR ITEMS DE UN COMBOBOX MEDIANTE UN COMANDO DE BOTÓN

Recientemente recibí varias consultas relativas a formularios por parte de un lector. Una de ellas me pareció interesante y hoy voy a comentarla. Se trata de la posibilidad de mediante dos botones mover el contenido que hemos cargado en un control combobox.

Normalmente, cuando cargamos un combo, la información la consultamos abriendo el desplegable y seleccionando el ítem que nos interesa, pero en este caso, la información la veremos a través de dos botones, uno que permita ir hacia delante y otro hacia atrás, mostrando un ítem con cada clic.

Imaginemos que tenemos un combobox  y que lo hemos rellenado con la información que tenemos en la primera columna de la hoja “DATOS” de nuestro archivo (para este ejemplo caso son los departamentos de la empresa que me inventé para el post de los organigramas en SmartArt).

A ese userform le vamos a agregar dos botones (Atrás y Adelante), de forma que cuando inicialicemos nuestro form aparecerá lo siguiente:

SELECCIONAR ITEMS COMBOBOX MEDIANTE BOTONES

Ahora ya podemos ir al código:

Para cargar los datos en el combobox (hay muchas formas de hacerlo, esta es la que suelo utilizar).

Private Sub UserForm_Initialize()
With Sheets("DATOS")
Fin = Application.CountA(.Range("A:A"))
ComboBox1.List = .Range("A2:A" & Fin).Value
End With
End Sub

Ahora que tenemos los datos en el combo, usamos la siguiente macro para el botón “ATRÁS”:

Private Sub CommandButton1_Click()
ComboBox1.SetFocus
SendKeys "{Up}"
End Sub

Y esta otra macro para el botón “ADELANTE”.

Private Sub CommandButton2_Click()
ComboBox1.SetFocus
SendKeys "{Down}"
End Sub

Como podéis ver, simplemente aplico el foco en el Combobox1 y luego con SendKeys utilizo las teclas del teclado de arriba y abajo, consiguiendo así que los ítems de nuestro combo vayan apareciendo a medida que pulso en los botones.

Aunque no es frecuente realizar este tipo de programación, sí puede surgir en algún momento la necesidad, prueba de ello es la propia consulta del lector.

Descarga el archivo de ejemplo pulsando en: SELECCIONAR ITEMS DE UN COMBOBOX MEDIANTE UN COMANDO DE BOTÓN

Anuncios
LOGARSE CON EL NOMBRE DE USUARIO DEL EQUIPO PARA ACCEDER A EXCEL

LOGARSE CON EL NOMBRE DE USUARIO DEL EQUIPO PARA ACCEDER A EXCEL

Muy a menudo, cuando realizamos nuestros proyectos en Excel y no queremos que la información sea pública porque queremos restringirla a ciertos usuarios, solemos utilizar macros para confeccionar diálogos de contraseñas, por ejemplo para abrir un userform, en esta web ya tratamos este tema aquí.

Lógicamente, esto cobra especial importancia cuando trabajamos en red dado que nuestro archivo es accesible a un gran número de usuarios. Para solucionar esta problemática de seguridad, podemos recurrir a claves, que no siempre son la solución ideal, dado que se pueden compartir, o prestar, etc.  provocando que no sepamos realmente quien accede a nuestra información. O podemos utilizar el nombre del usuario activo en el equipo que se conecta para tener controlados los accesos.

¿Cómo lo hacemos?.  Es sencillo, teniendo en cuenta el siguiente código:

Set objNetwork = CreateObject("WScript.Network")
UserName = objNetwork.UserName

Con él podemos conocer el nombre del usuario que se encuentra activo en el equipo. Con este dato ya tenemos suficiente para crear nuestro sistema de seguridad. Aunque estoy seguro que con esta información ya la adaptaréis sin problema a vuestros equipos, por mi parte, voy a realizar un pequeño ejemplo para que veáis como se puede implementar.

Imaginad que tenemos un archivo en el que hemos desarrollado un programa realizado con formularios y lo colocamos en un directorio común al que solo queremos que accedan ciertos usuarios. En ese formulario (que lo vamos denominar como “INFORMACIÓN”), hemos colocado un textbox que cuando el usuario tenga permiso de acceso, mostrará que está conectado y se pondrá de color verde. En caso de que no lo esté no le mostrará nada, simplemente el “INFORMACIÓN” no se mostrará.

Vamos entonces a implementar un código que realice lo que hemos comentado. La macro que vamos utilizar es la siguiente:

Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection
Dim recSet As New ADODB.Recordset
Dim strSQL As String
Dim objNetwork As Object
INFORMACION.TextBox1.BackColor = vbWhite
'OBTENEMOS EL NOMBRE DE USUARIO ACTIVO EN EL EQUIPO
Set objNetwork = CreateObject("WScript.Network")
UserName = objNetwork.UserName
'CONECTAMOS CON EL ARCHIVO QUE CONTIENE EL NOMBRE DE LOS USUARIOS
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "DATA SOURCE= " & ThisWorkbook.Path & "\" & "LOGARSE_CON_EL_NOMBRE_DE_USUARIO_DEL_EQUIPO.xls"
.Properties("Extended Properties") = "Excel 12.0; HDR=YES"
.Open
End With
'CON UNA CONSULTA SQL COMPROBAMOS SI EXISTE EL USUARIO DEL EQUIPO EN NUESTRA BASE DE DATOS
strSQL = "SELECT [DATOS$].[USUARIO] " & _
"FROM [DATOS$] " & _
"WHERE[DATOS$].[USUARIO] = " & " '" & UserName & "'"
recSet.Open strSQL, cnn
strTexto = recSet![Usuario]
'SI EXISTE, EXTRAEMOS EL NOMBRE Y ES IGUAL AL DEL EQUIPO, MOSTRAMOS EN EL FORM MENSAJE DE CONECTADO
'SI NO EXISTE, EL MODULO ThisWorkBook controlará el error.
With INFORMACION
If UserName = strTexto Then
.TextBox1.Value = "USUARIO: (" & UCase(UserName) & ") ESTÁ CONECTADO"
.TextBox1.BackColor = vbGreen
End If
End With
'DESCONECTAMOS
recSet.Close: Set recSet = Nothing
cnn.Close: Set cnn = Nothing
End Sub

Este código lo colocaremos en el userform, en el evento “Initialize”, de forma que se ejecutará cuando “INFORMACIÓN” se muestre.

Como podéis ver, en la macro nos estamos conectando y realizando una consulta SQL a otra hoja para comprobar qué usuario actual está en nuestra base de datos. En este caso he utilizado el mismo archivo, pero lo lógico es conectarse a otro archivo diferente que contenga esta base de datos o incluso también a un base de datos en Access en otro directorio. Pero como ejemplo nos sirve.

Aquí nos conectamos a nuestro propio archivo, y consultamos los datos que se encuentran en la hoja denominada “DATOS”, donde está el listado de usuarios permitidos. Automáticamente, si todo es correcto, “INFORMACIÓN” se mostrará y aparecerá el textbox en verde con el nombre de usuario concectado.

En caso de que no exista, el sistema mostrará un error y no se abrirá nada. Pero para controlar el error y mostrar un cuadro de diálogo que diga, por ejemplo: “EXISTE UN PROBLEMA CON SU USUARIO”. Vamos a incluir este código en el módulo ThisWorkBook, en el evento Workbook_Open :

Private Sub Workbook_Open()
'Si en el momento de mostrar el formulario INFORMACION
'aparece el error 3021 (no encuentra el usuario, o no es correcto)
'INFORMACIÓN no se abrirá y mostraremos un MsgBox advirtiendo del motivo
On Error GoTo Usuario
INFORMACION.Show
Usuario:
If Err.Number = "3021" Then MsgBox ("EXISTE UN PROBLEMA CON SU USUARIO"), vbExclamation, "CONTROL USUARIOS"
End Sub

Una vez hayáis implementado todos pasos, y si vuestro usuario coincide con el que consta en la base de datos, el userform se abrirá y mostrará esta información:

LOGARSE CON EL NOMBRE DE USUARIO DEL EQUIPO PARA ACCEDER A EXCEL

Y este sistema lo podéis implementar en un sinfín de situaciones y según vuestras necesidades. Es interesante porque mantenemos el control de nuestras aplicaciones desde otro lugar, sin necesidad de entregar claves ni proteger la información, simplemente damos o no acceso.

Descarga el archivo de ejemplo pulsando en: LOGARSE CON EL NOMBRE DE USUARIO DEL EQUIPO PARA ACCEDER A EXCEL

 

GESTION CLIENTES_4

GESTIÓN DE CLIENTES (modificaciones)

Ya hace varios años que publiqué un pequeño programa realizado en Excel con motivo de emular las bases de datos de Access y reclamar también así las posibilidades que ofrece Excel para confeccionar este tipo de trabajos: GESTIÓN DE CLIENTES

El motivo de la actualización de hoy, no se debe a mejoras en el programa (que se podrían realizar, pero con tiempo suficiente) , sino a varias consultas y peticiones realizadas por los lectores en cuanto a la necesidad de completar todos los datos que se piden al dar de alta a un cliente. Es decir, que muchos lectores, necesitan que sea posible dar de alta a un cliente sin tener que grabar los datos relativos a su dirección o contacto, de modo que así puedan realizar esta tarea mucho más rápida.

En mi opinión personal y desde el ámbito de la información y las bases de datos, siempre consideraré que es fundamental contar con la máxima cantidad de información. Y esto es fundamental, con ello conseguiremos una base de datos de calidad, fiable y útil. El dar de alta a un cliente sin una dirección asociada o sin un teléfono móvil, puede provocar que cuando necesitemos ponernos en contacto con él no lo podamos hacer, cosa que se habría solucionado perdiendo unos minutos en la toda de datos, por eso en el formulario GESTIÓN DE CLIENTES esta información es obligatoria.

Dicho esto, también tengo en cuenta que en ciertos momentos, no se dispone de dicha información o el cliente no quiere facilitarla, y siempre será mejor dejar un dato en blanco que inventarlo.

Por ello dejo aquí otra versión donde solo se pide de forma obligatoria los datos personales, pudiendo dejar sin rellenar el resto de datos (direcciones y teléfonos). De todas formas, os invito a que siempre intentéis dar de alta todos los datos que podías de vuestros contactos.

Otra mejora que he introducido en este formulario ha sido implementar el buscador de nombres. Es algo sencillo, simplemente he agregado un listbox que se carga cada vez que se pasa el cursor del ratón por encima y para buscar el nombre basta con teclear la primera letra y mostrará los resultados, luego solo hay que seleccionarlo y pulsar en “Buscar”.

También recordar que el formulario está completamente abierto, y si cualquier usuario desea realizar nuevas modificaciones o actualizaciones puede hacerlo fácilmente entrado en el código.

 

Descarga el archivo pulsando enGESTION DE CLIENTES

INTRODUCIR CONTRASEÑA EN UN USERFORM

Hoy he conseguido unos minutos para escribir el post de la semana :). Y voy a comentar la forma de introducir una contraseña en un userform, es una pregunta que me hizo un lector del blog y creo que es ideal para tratarla hoy.

Para hacer el ejemplo, vamos a utilizar un userform y un textbox en el que introduciremos la contraseña:

INTRODUCIR CONTRASEÑA EN USERFORM
Antes de incluir el código para el ejemplo, como truco, si queréis que cuando se introduzca la contraseña aparezca un carácter especial (normalmente el asterisco “*”), lo podemos especificar directamente en la ventana de propiedades del textbox, en Passwordchar:

INTRODUCIR CONTRASEÑA EN USERFORM_1

Ahora vamos a introducir el siguiente código en el módulo “Thisworkbook”:

Private Sub Workbook_Open()
'Cuando el archivo se abre, oculta la hoja 1 y 2
Sheets(2).Visible = False
Sheets(3).Visible = False
'y muestra el userform
UserForm1.Show
End Sub

De forma que cuando abramos el libro, siempre ocultemos las hojas 1 y 2 de nuestro proyecto.

A continuación nos vamos al código del userform y en el botón vamos a introducir la siguiente macro:

Private Sub CommandButton1_Click()
'Si introducimos la clave indicada en el textbox se muestra el mensaje OK
With UserForm1
If UCase(TextBox1.Value) = UCase("a1b1") Then
MsgBox ("LA CLAVE INTRODUCIDA ES CORRECTA"), vbInformation, "CLAVE OK"
'y se muestran las hojas ocultas
Sheets(2).Visible = True
Sheets(3).Visible = True
'Si la clave no es correcta, se muestra el mensaje de clave incorrecta.
Else
MsgBox ("LA CLAVE INTRODUCIDA NO ES CORRECTA"), vbExclamation, "CLAVE INCORRECTA"
End If
'Borramos el contenido del userform
TextBox1.Value = Empty
End With
End Sub

Con esta macro lo que vamos a hacer es mostrar las dos páginas ocultas. En caso de introducir de forma incorrecta la clave (a1b1), simplemente no hará nada y solo mostrará el mensaje de contraseña inválida.

Adicionalmente he introducido la función “Ucase” (que pasa a mayúsculas los caracteres a los que hace referencia), de esta forma aunque introduzcáis la clave en minúsculas o mayúsculas, la validará como correcta. Si queréis que discrimine entre mayúsculas o minúsculas, simplemente la quitáis.

Pues bien, aquí se acaba el post de hoy, espero que os haya resultado de interés:

Descarga el archivo de ejemplo pulsando en: INTRODUCIR CONTRASEÑA EN FORMULARIO

DESACTIVAR BOTÓN DE CERRADO (X) EN UN USERFORM

Hoy quiero publicar una pequeña entrada, a modo de píldora formativa, de cómo se puede desactivar el botón de cerrado de un userform.

Muchas veces, cuando confeccionamos aplicaciones nos interesa que el usuario salga de las mismas pulsando un determinado botón y no cerrando la ventana de formulario directamente. Esto lo conseguiremos introduciendo un código específico en el userform:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

En el momento que lo apliquemos, el userform no se podrá cerrar desde el botón habitual:

DESACTIVAR BOTON PARA CERRAR USERFORM

Con ejemplo de la imagen, podemos ver claramente como ahora debemos pulsar el botón que pone “CERRAR” para salir del formulario y no hacerlo pulsando la X.

Adicionalmente he añadido código para que al abrir el archivo de Excel automáticamente se genere el form, se debe colocar en el módulo Thisworkbook:

Private Sub Workbook_Open()
UserForm1.Show
End Sub

También para salir del formulario pulsando en el botón “CERRAR”, debemos colocar el siguiente código dentro del userform:

Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub

Y este ha sido el pequeño post de hoy, un sencillo truco para facilitar nuestros procesos 🙂

Descarga el archivo de ejemplo pulsando en: DESACTIVAR BOTÓN DE CERRAR EN UN USERFORM

GESTIÓN DE CLIENTES CON EXCEL

Hace unos días subí un post titulado “GESTIÓN DE CLIENTES CON FORMULARIOS EN EXCEL” y comentaba la utilidad que puede llegar a tener Excel para trabajar con bases de datos y las posibilidades que nos pueden ofrecer los formularios para confeccionar un pequeño programa para llevar la gestión, por ejemplo, de clientes.

Pues bien, ya he finalizado esta pequeña aplicación y hoy la voy a subir para que todos tengáis acceso a ella. No se trata tanto de hacer un programa cerrado y protegido sino todo lo contrario, quiero dar oportunidad de que lo podáis explorar, de que podáis ver cómo he hecho algunas cosas y de que tengáis la oportunidad de modificarlo e incluso mejorarlo.

Siempre he creído que es mucho más interesante para todos el poder ver cómo se hacen las cosas y no poner barreras al conocimiento.

El programa está diseñado y probado en las versiones de Excel 2003, 2007, 2010, 2013 y 2016 y funciona perfectamente. No he tenido ocasión de probarlo en 2013 (así que si alguno de vosotros lo puede hacer y verificar que todo se ejecuta correctamente estaría muy agradecido).

El programa no es muy extenso, pero explicar aquí toda la programación sería prácticamente imposible, lo que voy a hacer es mostrar todas las pantallas e indicar para que sirve cada una de ellas:

Pantalla de inicio:

GESTION CLIENTES_1

En esta primera pantalla podemos ver las diferentes opciones que nos va a permitir realizar nuestro programa. Vamos a poder dar de alta un nuevo cliente, consultar los datos introducidos y modificarlos, dar de baja al cliente, borrar por completo la base de datos y consultar la relación de clientes existente en cada momento así como exportar estos datos a un nuevo libro.

NUEVO CLIENTE:

GESTION CLIENTES_2

Esta es la pantalla que vamos a utilizar para dar de alta un cliente nuevo, debemos tener en cuenta que la aplicación está diseñada para dar de alta tanto a empresas como a personas, por lo que vamos a distinguir en todo momento a clientes con personalidad jurídica  (empresas) y clientes con personalidad física (personas).

Una vez que marquemos la distinción solo tenemos que ir introduciendo los datos requeridos, en caso de que alguno de los campos quede vacío el sistema nos avisará para que procedamos a completarlo, existen controles en los diferentes campos para ayudar a que la información sea la correcta, por por ejemplo en el tipo de documento, que en caso de ser DNI, NIE o CIF la longitud máxima de caracteres será de 9 posiciones o que por ejemplo una persona no puede tener asignado un CIF (que es el documento de identificación de una empresa).

Además he dejado un campo de anotaciones de 250 caracteres que seguro resulta muy útil para tomar notas sobre el cliente (preferencias, datos importantes, etc…).

Una vez que pulsemos “GRABAR DATOS” la información será grabada definitivamente en la aplicación. En ese momento saltará un mensaje diciendo que los datos se han grabado correctamente y el sistema asignará un número único y permanente al cliente:

GESTION CLIENTES_3

De esta forma tendremos un nuevo cliente dado de alta en nuestra base de datos. Pero imaginad que hemos cometido un error en los datos introducidos o simplemente tenemos que actualizar una dirección, entonces debemos ir a la siguiente pantalla:

CONSULTAR Y MODIFICAR DATOS:

Tal y como dice esta pantalla, aquí podremos consultar la información de un cliente y en caso de ser necesario modificarla:

GESTION CLIENTES_4

Para consultar los datos primero se debe buscar al cliente, aquí lo he puesto bastante fácil, basta con que pongas o bien el documento de identidad o bien el nombre completo o bien el número de empleado y si el cliente existe, el sistema lo mostrará.

Los datos que se muestran al principio son solo de consulta, no se pueden modificar, para hacerlo debes pulsar en botón “MODIFICAR” justo debajo del botón “BUSCAR” y en ese momento se informará que los datos ya se pueden editar. No se pueden modificar el número de cliente, la fecha de alta, el estado del cliente o la fecha de baja.

El estado del cliente es para distinguir entre clientes activos o inactivos y las fechas de alta y baja son datos informativos que el sistema graba automáticamente, no se permite su modificación.

Para grabar los datos, debemos pulsar en “CONFIRMAR DATOS“. Siempre que exista una pantalla donde vamos a modificar la información, después de pulsar confirmar, aparecerá una segunda ventana pidiendo confirmación:

GESTION CLIENTES_5

Es importante,  porque de esta forma siempre tenemos una segunda oportunidad antes de confirmar los datos introducidos.

En toda base de datos de clientes debemos tener presente que se pueden producir bajas y que también después de un tiempo esos clientes que se han ido pueden volver, para gestionar todo esto debemos acceder a siguiente pantalla:

BAJA CLIENTE:

GESTION CLIENTES_6

Para dar de baja a un cliente es necesario realizar su búsqueda, una vez que introducimos los criterios y pulsamos buscar se mostrarán los datos identificativos. Si todo es conforme, pulsaremos en “TRAMITAR BAJA” en ese momento, el sistema asigna al estado del cliente el indicativo de “cliente inactivo” y grabará la fecha actual como fecha de baja. No se procede a eliminar el cliente de la base de datos, sino a codificarlo como inactivo.

En caso de habernos equivocado o que pasado un tiempo podamos volver a dar de alta al cliente, debemos pulsar “REACTIVAR ALTA“. En ese momento el cliente pasará a ser “cliente activo” y la fecha de alta será la del día actual. Además el sistema graba internamente las veces que un cliente ha sido reactivado, este dato lo podéis ver una vez que exportéis la base de datos.

Puede que deseemos volver a hacer una nueva base de datos, para ello he habilitado la opción de borrar toda la información del sistema, si pulsamos en la pantalla de inicio en el botón: “BORRAR BASE DE DATOS” aparecerá el siguiente mensaje:

GESTION CLIENTES_7

La clave a introducir es “123” y una vez que pulsemos “ACEPTAR” se borrará toda la base de datos. Debéis estar seguros de querer realizar este paso, porque luego no hay marcha atrás.

Si deseamos ver toda la base de clientes y exportar los datos a un nuevo libro para tratar la información, debemos ir a la pantalla de inicio y pulsar en el botón “RELACIÓN CLIENTES” y aparecerá un listbox con toda información de clientes:

GESTION CLIENTES_8

Si queremos extraer la información a un nuevo libro debemos pulsar el botón “EXPORTAR DATOS” y toda la base de datos se grabará en un nuevo libro, donde podremos tratar la información para confeccionar nuestros propios informes o trabajos.

Y hasta aquí es la explicación de cómo funciona cada una de las pantallas de esta aplicación, en principio todos los comandos funcionan correctamente y los errores que he podido encontrar los he corregido, no obstante si veis que algo no funciona os agradecería que me lo dijeseis para proceder a solucionarlo.

La clave utilizada en todo momento es “123” (sin comillas).

Para terminar, la aplicación utiliza dos hojas para poder funcionar:

– Hoja2 (“COMBOS”) donde está la información con la que se cargan los combobox de los fomularios.
– Hoja3 (“DATOS”) donde se graban todos los datos de los clientes.

GESTION CLIENTES_9

SI MODIFICÁIS EL NOMBRE DE ESTAS HOJAS la aplicación no funcionará. Pero podéis modificar el contenido de los combo box, por ejemplo en las provincias, en caso de estar en otro país, etc. o en la hoja datos, si tenéis vuestra propia base de clientes podéis exportar los datos de forma masiva y no tener así que ir grabando a cada cliente de uno en uno.

No he introducido código para el control de errores y lo he hecho para que si algo no funciona nos lo notifique y saber así que algo no marcha bien y en que parte del programa sucede. Ahora solo tenéis que probarlo, curiosear con la programación y ponerlo en práctica.

Descarga el archivo pulsando enGESTION DE CLIENTES

*  Teniendo en cuenta el alto número de peticiones para que el programa pueda dar de alta un cliente sin necesidad de que sea obligatorio introducir los datos de direcciones y teléfonos. Y por otra parte, implementar el buscador por nombres, de forma que se pueda buscar sin necesidad de introducir el nombre y apellidos completo: en este enlace podéis descargar otra versión sin estas condiciones y con el buscador: Enlace GESTION DE CLIENTES versión.1

 

GESTIÓN DE CLIENTES CON FORMULARIOS EN EXCEL

Hace casi un mes que no actualizo el blog, y no es porque no me apetezca sino más bien porque últimamente dispongo de poco tiempo para subir material nuevo.

Pero también tengo que contaros que llevo varias semanas trabajando en un programa en Excel para la gestión de clientes. La idea surgió leyendo en un foro acerca de las ventajas y desventajas que Excel tiene frente a otros programas a la hora de realizar aplicaciones, y donde se dudaba de su idoneidad para la creación y manejo de bases de datos.

Puede que Excel tenga carencias en aspectos tan relevantes como  trabajar con archivos compartidos o la seguridad, pero no es menos cierto que utilizando las herramientas adecuadas, vba y formularios, se puede crear una aplicación que no tiene nada que envidiar a otros programas.

Y en ese punto me encuentro, trabajando en una aplicación para la gestión de clientes de cualquier tipo de organización y tengo que decir que por ahora funciona perfectamente. Me estoy parando en los detalles, tanto del código como de la funcionalidad, y en los próximos días (si no se me complica algo y teniendo en cuenta que cuando más avanzo es los fines de semana) tendré un 90% ya finalizado.

Ya sabéis que el motivo de este blog es enseñar, aprender y mejorar y por eso una vez que lo haya “pulido” y puesto a prueba para encontrar errores ocultos o falta de funcionalidad ,lo subiré al blog.

Hasta ese momento, os pido un poco de paciencia por llevar tanto tiempo sin publicar nada.

Saludos.

Segu

🙂