Notifications
Clear all

Bloqueio de celula com senha

30 Posts
3 Usuários
0 Reactions
4,581 Visualizações
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Boa noite!

Consigo fazer bloqueio de celula com senhas pelo VBA? preciso bloquear as celulas B13 a D13 com uma senha e as celulas E13 a G13 com outra senha, para cada setor ter acesso para alterar informação correspondentes a eles.

 
Postado : 15/06/2018 3:16 pm
(@xlarruda)
Posts: 0
New Member
 

Acredito que isso resolva:

1- Selecione o intervalo que deseja inserir a senha
2- Clique na Aba "Revisão"
3- Clique em "Permitir que usuários editem Intervalos"
4- Clique em Novo
5- Insira um nome para o intervalo > insira um intervalo > insira uma senha > repita a senha > Clique em Aplicar.

Repita isso para quantos intervalos precisar inserindo quantas senhas forem necessárias para cada intervalo.

No final bloqueie a planilha normalmente

 
Postado : 15/06/2018 3:55 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kako,

Boa noite!

Com VBA, protegendo separadamente cada faixa de células com suas respectivas senhas. Note que a aba precisa estar bloqueada. Quando é selecionada uma das 3 células de um autorizador, se as células ainda estiverem bloqueadas para edição, é apresentada uma mensagem solicitando a senha. Se a senha estiver correta, então as 3 células da faixa dele são liberadas para edição. Quando for digitada a última célula de cada faixa, o código volta a bloquear as células.

Veka se é assim.

 
Postado : 15/06/2018 6:12 pm
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner, bom dia!

A ideia é essa, mas para desbloquear as celulas E13 a G13 ele pede para desbloquear a planilha toda.

Um outro ponto, vou colocar um botão de consultar e um de limpar, esses códigos não terão problemas quando acionar uma desses macros?

Desde já agradeço a ajuda

 
Postado : 18/06/2018 8:09 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kako,

Não entendi...

mas para desbloquear as celulas E13 a G13 ele pede para desbloquear a planilha toda

Não está ocorrendo isso.

Quanto aos botões, acredito que não haja interferência nenhuma.

 
Postado : 18/06/2018 8:51 am
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner,
quando desbloqueia as celulas B13 a D13 e preenche alguma informação ele não pede a senha nas celulas E13 a G13, ele só pede para desbloquear a planilha toda.

Quando clica no botão limpar esta dando erro, não limpa.

 
Postado : 18/06/2018 11:46 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kako,

Entendi. Faltava uma linha de comando.

 
Postado : 18/06/2018 12:05 pm
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner
Agora esta funcionado certinho, mas quando coloco na minha planilha ele fala que esta repetindo o Private Sub Worksheet_Change(ByVal Target As Range).
Como posso corrigir isso?

 
Postado : 18/06/2018 12:35 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kaka,

Aí só vendo seu arquivo original e com as modificações que você fez.

Outra coisa: Você já postou nesse fórum 14 mensagens e, até o presente momento, parece que nenhuma satisfez ou atendeu as suas necessidades. Mais uma vez, peço que vote positivamente nas mensagens (não só as minhas) que atenderam a sua necessidade pois esse é um fórum completamente gratuito onde seus integrantes são pessoas que ajudam por que querem. Lembro que o "joinha" aqui dado não custa nada e que é o único incentivo que os integrantes do fórum possuem para continuar contribuindo.

 
Postado : 18/06/2018 12:41 pm
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner,
Posso mandar sem problemas o arquivo pra vc, mas é um pesado para passar pelo forum, se tiver alguma outra forma eu mando.

Quando aos "joinhas" peço desculpas, achei que daria quando for solucionado, sou novo rsrs

Volto a te agradecer, esta me ajudando e muito nos assuntos.

Parabéns.

Eu entendo mais de tabelas dinâmicas, ai domino legal, mas sou uma negação em VBA.

 
Postado : 18/06/2018 12:55 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Você pode salvar um exemplo pequeno do seu arquivo original, máximo de umas 5 linhas, porém exatamente com o mesmo layout do arquivo original (nome do arquivo, nome das abas, linha onde começam os dados, todas as colunas, etc), compactar com .ZIP (mesmo pequeno) e anexar aqui mesmo no fórum.

De todo modo, se ainda assim ficar grande, pode ser enviado para um site de compartilhamento de arquivos e colado só o link aqui. Todavia, existem muitas empresas (como a que eu trabalho) que bloqueiam esse tipo de site e n~]ao permitem abrir ou baixar os arquivos.

Quanto ao "joinha" no outro tópico que lhe ajudei você, inclusive, deu o mesmo como resolvido...

 
Postado : 18/06/2018 1:01 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Essa questão que você colocou do Private Sub Worksheet_Change(ByVal Target As Range) não é porque tem duas procedures desse tipo com esse mesmo nome no seu código?

Se for isso, não é possível a existência de duas procedures iguais.

 
Postado : 18/06/2018 1:22 pm
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner, boa tarde!
Segue um exemplo, na Plan1 o Layout será esse mesmo, as abas não mudei o nome,
tenho que colocar o código do bloqueio na Plan1, lá é onde fala que esta repetindo.
o Bloqueio vão ficar na B13 a D13 com uma senha e da E13 a G13 com outra senha.
Os setores de Operações, logística e TEM não precisam de senhas.

 
Postado : 18/06/2018 2:05 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kako,

Boa noite!

Infelizmente, não vou poder resolver essa! Veja, o primeiro código que desenvolvi (no primeiro post) foi obedecendo uma lógica toda voltada para o tipo de problema que você havia pedido (a lógica pedida era que quando um usuário digitasse alguma coisa em D13 e tivesse um código de produto em C2, desde que também tivesse algo em B13 em C13, que o código deveria procurar pelo número desse código lá na coluna A da Plan2 e se o encontrasse, que deveria levar para as coluna S, T e U os valores de B13, C13 e D13 da Plan1). Isso eu fiz.

Então, você pegou esse código , desenvolvido com essa lógica de programação, fez adaptações e o que está colocado aqui nesse arquivo que você enviou é bem diferente da lógica inicial, pois, inicialmente, era apenas o que está comentado acima. Nesse, quando o usuário digitar o código em C2, entrar com valores em B13, C13 e finalmente em D13 e teclar ENTER, além de levar os dados para as células S, T e U correspondentes em Plan2, ele sequer valida os dados do outro autorizador (E13 a G13) pois não foi desenvolvido e nem adaptado para essa finalidade. Simplesmente, na sua adaptação, tudo é copiado para a Plan2 (inclusive os dados de E13 a G13) e outros dados da Plan1.

Depois você pediu um código onde cada autorizador pudesse autorizar seu bloco de células separadamente (individualmente). Da mesma forma eu desenvolvi um código obedecendo essa lógica (para essa finalidade). Agora, você quer juntar as duas coisas e elas são incompatíveis. Por isso que deu erro aí quando você tentou juntar as duas coisas. Como eu disse no meu último post, o erro foi causado pelo fato de que o VBA não aceita duas rotinas com o mesmo nome do mesmo módulo, principalmente, quando essas rotinas são procedures próprias criadas pelos eventos dos objetos nativos dele (caso do evento WorkSheet_Change). Detalhe: da forma que a lógica para os dois casos foi desenvolvida, não é possível simplesmente fazer inserções de algumas linhas do código novo no código antigo. Não bate uma coisa com a outra. É preciso repensar todo o projeto e recomeçar do zero.

Programação é realmente uma coisa muito complexa pois o computador, infelizmente, ainda é completamente burro e só faz o que nós mandamos ele fazer. Por essa razão é que, antes de se iniciar qualquer projeto, é necessário que se desenhe (mesmo que mentalmente) o algoritmo desse projeto para que o mesmo tenha começo, meio e fim e possa ser desenvolvido a contento sem retrabalhos ou atropelos.

Por exemplo: se você estivesse dirigindo e percebesse que um dos pneus do carro furou, qual seria o algoritmo desse projeto (trocar o pneu furado de um carro)? Muita gente já começaria dizendo: Eu tiraria o pneu do estepe do porta-malas, depois tiraria o pneus furado do carro e colocaria o pneu de estepe no carro. Bom... teoricamente, para humanos, isso pode até ser inteligível e talvez até dê certo, dependendo da pessoa com quem estamos tratando. Todavia, para o microprocessador do computador não é assim. Primeiro, você teria que parar o carro no acostamento, puxar o freio de mão, soltar o cinto de segurança, abrir a porta do motorista, tirar a chave da ignição, descer do carro, caminhar até a parte de trás do carro, colocar a chave da fechadura do porta-malas, levantar a tampa do porta-malas e por aí vai... até conseguir realizar o projeto inteiro e sair tranquilamente com o carro para uma borracharia para consertar o pneu.

Desculpe a longa explicação, todavia, necessária para que entenda porque não tenho como ajudar nesse caso. Para tanto, repito: você precisa fazer um passo-a-passo detalhado de todo o processo de forma muito clara e objetiva Pode ser inclusive numerado. Exemplo de um algoritmo simplório para somar dois números:
1 - Na célula A2 tenho o número 2
2 - Na célula A3 tenho o número 3
3 - Quero que na célula A4 o Excel coloque o resultado da soma do valor de A2 + A3.

Sugiro que você repense detalhadamente seu projeto, faça o algoritmo dele minuciosamente (mesmo que isso acarrete em muitas linhas) e abra um novo tópico só para isso. O projeto (mesmo que seja divido em processos ou partes menores) precisa ser pensado integralmente e ter começo, meio e fim. Lembre-se de que tudo deve está muito claro na sua mente pois você conhece todo o processo. Todavia, para outros (inclusive para mim), tudo precisa ser claro e detalhado. Até hoje, por exemplo, eu não entendi corretamente a questão de dois autorizadores, em que momento cada um deve autorizar, se eles autorizam em conjunto ou separado, se autorizam em momentos distintos e por ai vai...

 
Postado : 18/06/2018 4:19 pm
 Kako
(@kako)
Posts: 0
New Member
Topic starter
 

Wagner, bom dia!
Primeiro peço desculpas novamente, parte de VBA não entendo muito, achei que dava pra juntar os codigos.
Vou detalhar o projeto da planilha,
Aqui na empresa a area comercial esta uma bagunça, ninguem sabe quem vendeu o que, e tem vendas incorretas com valores, então estamos fazendo essa planilha para controlar isso, o vendedor preenche as informações da venda, da B6 até a I9, quando ele clicar no botão "Novo pedido" as informações vai para o banco de dados na plan2, sobe um popup com o numero do pedido e o BKO recebe um email com o nome do vendedor e numero do pedido, o BKO ira avaliar a documentação do cliente, o plano vendido (que ficou padrão), confirma o valor se esta de acordo com a tabela, BKO confirmou tudo ele aprova o pedido, tera um botão que vai enviar um email para o Financeiro que vendo o registro do BKO como aprovado vai avaliar se o cliente for da base e paga certinho vai aprovar, se não for da base vai confirmar nome no serasa, aprovou no financeiro o pedido vai para operações que separa e testa o produto, depois vai para logistica e sempre preenchendo as informações, pois o vendedor pode consultar o status do pedido na plan1 mesmo, por ultimo vai para o TEM que faz o cadastro do cliente no sistema de faturamento.
O motivo dos bloqueios na Plan2 é para somente a nossa diretoria ter acesso, motivo do bloqueio com senha nas celulas do BKO e Financeiro é para o próprio vendedor não dar uma de esperto e ele mesmo aprovar os pedidos.
Toda vez que apresento a planilha pro diretor tem algo a mais que ele quer acrescentar como segurança.
Pergunta: Existe um codigo que da pra juntar as dus informações? Bloqueio e alimentar a plan2 as informações do BKO em diante?

 
Postado : 19/06/2018 6:34 am
Página 1 / 2