Saltar al contenido

Permisos de Usuarios para formularios


Editame

Recommended Posts

publicado

hola buenas noches a todos, antes de empezar quiero decir que me puse en la tarea de buscar en cada tema relacionado a este y no encontre una respuesta veraz sobre lo que necesito por eso me atrevo a crear nuevamente este tema pero basado en Formularios.

Puntualmente tengo un archivo de excel con formularios a los cuales les quiero aplicar  permisos de usuarios para habilitar o deshabilitar algunos CommandButond del UserForm principal o Menu segun sea el usuario que ingrese, lo mas similar a este tema que encontre usa Acces y algo con ADO lo cual no tengo conocimientos y por eso no me sirvio pido por favor el redireccionamiento necesario o la ayuda necesaria para poder encontrar la solucion.

Adjuntare el archivo en el cual estoy trabajando con dos fines, el primero poder facilitar la ayuda o respuesta a mi tema y segundo compartir con los demas por si les piuede servir, es un archivo que he sacado de varias fuentes y que poco a poco he ido construyendo segun mi necesidad todavia le faltan muchisimas cosas pero creo que voy por un buen camino para llegar a tener una solucion definitiva en cuanto al manejo de una pequeña empresa.

Les agradezco de antemano la colaboracion que puedan prestarme y esperare atento cualquier solicitud de su parte.

 

NO ME DEJO ADJUNTAR EL ARCHIVO POR LA PAGINA ME BOTA UN ERROR " Ha habido un problema procesando el fichero enviado. Please contact us for assistanc"

ADJUNTO ARCHIVO POR DROPBOX 

https://www.dropbox.com/s/x6yxte77kinxblo/CONTABLE - copia.xlsm?dl=0

publicado

Hola Editame,

Lo tengo hecho en access. Te voy a dar la idea para ver si lo puedes hacer tu. Si luego puedo te pongo algo mas. O si te atascas en algo pregunta.

En mi caso lo hice con los formularios no con los commandbutton. Osea que cuando un usuario va abrir un formulario, dependiendo el nivel que tenga le dejo o no.

Cuando identificas la entrada en el Form LOGIN, ¿Guardas el usuario que ha entrado en algun sitio? ES NECEsARIO. En mi caso lo guardo en una tabla access.

En este caso yo pondria en el form donde quieres que te deasactive los command button, una etiqueta (label) con el típico "USUARIO CONECTADO: JUAN PEPITO".

A la hoja usuario le pondria una columna nueva que se llame por ejemplo NIVEL.(del 1 al 5 por ejemplo, fue mi caso)

Y a cada formulario le doy un nivel en su propiedad tag. En access los formularios tienen la propiedad tag que sirve como información adicional de los formularios. Excel tambien la tiene, la veras en las propiedades del userform. Pues te vas a las propiedades de tus formularios y escribes el la propiedad tag el nivel que quieres que necesite el usuario que va a abrirlo.

En los eventos de los Open_Form de todos los formularios, evaluas el nivel del usuario con el del formulario y si es mayor o igual le dejas y sino no.

 

Ufff espero que me haya explicado:mad:

EDITO: Luego pensando me he dado cuenta que los formularios en excel no tienen el evento al Abrir , ASí que no sirve mi ejemplo, lo borro.

En acces el evento alAbrir te da la opcion de cancelar y en mi caso si el usuario no tenia suficiente nivel cancelaba y no se abria. Pero excel no se puede solo tiene el evento initialize y no se puede cancelar así que no se puede leer la informacion tag del formulario.

 

 

 

 

 

publicado

Mira esto, He quitado formularios por que sino no lo podia colgar.

Solo dejo dos en los cuales he cambiado el color de los botones. Si entras como administrador puedes abrir los dos si entras como el otro usuario solo puedes abrir uno de ellos.

 

 

publicado
Cita

ikanni dijo: "Pero excel no se puede solo tiene el evento initialize y no se puede cancelar así que no se puede leer la informacion tag del formulario".

 

Pero en el evento Activate, si.

publicado

Hola Ikanni agradezco tu respuesta el dia de ayer estuve muy ocupado y no pude revisar pero ya estoy en esas, estudiare el archivo que enviaste revisare el codigo a ver si entiendo como lo hiciste y continuo con el resto.

 

gracias y ya te estare contando como me fue.

publicado
Hace 18 horas, Macro Antonio dijo:

 

Pero en el evento Activate, si.

Ok no lo sabía, estoy un poco perdido con los eventos. Probaré para captarlo bien.

Gracias  MarcroAntonio.

publicado

El evento Activate se ejecuta inmediatamente después del procedimiento Initialize con el formulario ya cargado.

Una forma de ver como funciona todo este tema, es ejecutando el formulario/macro paso a paso (F8), y/o poniendo puntos de interrupción (F9) en la línea deseada y a continuación ejecutar (F5).

publicado

hola muchachos gracias por participar en el tema 

aaquino para entender o simplificar mas bn la forma de hacerlo en el ejemplo que enviaste, es jugar con los tipos de niveles y los mayor o menor que cierto ?

pero tengo una duda 

"If Hoja1.Range("B1") < Me.Tag Then"

En esta linea para el ejemplo tu pones B1 por que es donde esta el grado del nivel pero si son varias celdas como debo seleccionar el rango ??  Normalmente Range(B1:B10 ") por ejemplo o habria que utilizar otro metodo ??

publicado

Apañado para tu ejemplo, como decia MAcroAntonio e Aaquino  pero no me gusta como queda. En el fondo con evento activate no cancelas la apertura del formulario lo que sucede es que ya pasas a tener el control del formulario y entonces lo puedes cerrar. Y el usuario aunque se le cierra, lo puede ver y a mi particularmente no me gusta.

Queda mas apañado con el ejemplo que te he puesto arriba.

Saludos a todos

 

CONTABLE_IK_1.xlsb

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola, Parece un Kardex aunque al final me he perdido, entendí que necesita sumar las producciones siempre y cuando no pasen un punto del día. Tal vez algún Maestro o usuario avanzado pueda aportar algo con la información que ha compartido, pero en mi caso no comprendí por qué si  el prod1 tuvo una producción de 90 entonces cómo definió restarle ese 78, ¿es por qué tiene un NO en el "cumple"? Y luego termina en -12 porque le restó 24 que tampoco pude deducir cómo se determinaron. Le recomiendo hacer un ejemplo de un solo ITEM que deba ser afectado por las reglas que compartió y con los resultados que serían los correctos esperados.
    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.