Notifications
Clear all

proteger fórmula porém permitir entrada de dados

12 Posts
2 Usuários
0 Reactions
1,826 Visualizações
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

Pessoal,

é possível proteger uma fórmula em um célula, porém se for necessário o usuário pode entrar uma informação nesta mesma célula sem que a fórmula seja apagada? Ou seja, se a célula estiver vazia a fórmula preenche ela, mas se for necessário o usuário pode inserir um dado e se quiser apagá-lo depois a fórmula volta a ser responsável pelo preenchimento da célula.

Coloquei uma fórmula que se seu critério não for atendido o usuário terá que fazer entrada manual, eu gostaria de protegê-la, pois se o usuário se equivocar e apagar a célula, ou preencher com um informação errada a fórmula ainda estará ativa.

Pesquisei no fórum e na net em geral, mas não achei nada semelhante a esta dúvida, só como proteger a fórmula e deixar outras células livres para formatação, isto eu sei fazer.

abraços,

Tiago

 
Postado : 01/01/2013 7:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Use a pesquisa do fórum!!

Nestes caso você precisará detalhar melhor, creio que será necessário usar VBA.

Poste seu arquivo modelo compactado, repleto de detalhes.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/01/2013 7:31 pm
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

Ok, estou anexando um exemplo, mas é apenas parte da planilha, existem outras colunas que terão a mesma necessidade.

Se em B2 estiver selecionado "acidente" em D2 deixe a célula em branco, senão escrever "NA".

Ao deixar em branco o usuário deverá preencher a data, se eu proteger a fórmula no modo padrão o usuário não poderá entrar com a informação, porém se eu deixar desprotegido o mesmo poderá apagar sem querer a fórmula, estamos considerando usuários de baixo conhecimento. Minha ideia seria de alguma forma permitir que o usuário inserir dados quando quiser, ou mesmo sem querer, mas quando não houver entrada manual na célula quem preenche a mesma é a fórmula.

att,

 
Postado : 02/01/2013 3:26 pm
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

Se forem utilizar VBA, será que é possível fazer algo que se aplique a planilha inteira ou invés de apenas para uma coluna? Tem algumas células com umas fórmulas lazarentas, imagina transformar isto em VBA. (Não conheço muito VBA, sei copiar e colar, hehehe)

abs...

 
Postado : 02/01/2013 5:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tiago, faça os teste, click na mãozinha, dê retorno.

Baixe o arquivo em:
http://www.sendspace.com/file/u8fwi0

Tente alterar qualquer valor na coluna B, e o preenchimento na coluna D, se dará de forma automatica.
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/01/2013 10:41 pm
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

hey alexandrevba, que vc fez cara? conta a mágica aí. Ficou perfeito, mas como eu disse esta não é planilha que preciso, é parte dela, preciso replicar para a original...

cara, parabéns, só de entender o que eu pedi já foi uma vitória para mim, heheh, qts maozinhas tiverem serão clicadas...

abraços,

Tiago

 
Postado : 03/01/2013 7:47 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Obrigado pelo retorno, tente adaptar ao seu arquivo original.

Eu usei o evento worksheet_change...toda vez que uma célula sofre uma ação, o evento é disparado.
http://msdn.microsoft.com/en-us/library ... 39775.aspx
http://www.cpearson.com/excel/Events.aspx

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/01/2013 7:36 am
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

É um misto de alegria e tristeza, :D :cry: , até que o código não é tão complicado, mas nunca trabalhei com VBA, conheço alguma lógica de programação C++, mas já dei uma mechida e deu erro, quando eu estava achando que eu era um usuário avançado do Excel, lá vai começar td de novo.

De qualquer forma muito obrigado, além de ajudar ainda me motivou (pela dor, heheh) a aprender VBA.

abraços,

 
Postado : 04/01/2013 6:08 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Tiago, fica tranquilo, que se soubermos vamos ajuda-lo no que for ncessesario. ;)
Outra coisa, caso não exista mais duvida direta ao seu tópico lembre se marca-lo como resolvido!
Veja em:
viewtopic.php?f=7&t=3784

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/01/2013 7:36 pm
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

Ok, para finalizar, sem querer abusar da sua vontade, você poderia adaptar o código para que na coluna "B", além de "Acidente", considere "Quase-acidente" e "Não Conformidade", como se fosse a função "OU" do Excel, e que o resultado aconteça nas colunas "T", "U", "V" e "W"? Eu até fiz esta adaptação abaixo depois de pesquisar descobri que para colocar diversas colunas no range fica "T:T, U:U, V:V, W:W", mas está dando erro no último Range do Else. Com sua ajuda eu concluo esta necessidade, que está um pouco urgente para mais pesquisas, e vejo a lógica de uma adaptação, não que vai ser sempre a mesma, mas já é uma luz. Feito isto já clico em tópico resolvido.

abraços,

 
Postado : 05/01/2013 8:03 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente assim

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim n As Long
    Dim i As Long
    Dim myCells As Range
    n = Range("B65536").End(xlUp).Row
    If Not Intersect(Target, Range("B2:B" & n)) Is Nothing Then
        i = Target.Row
        If Target.Value = "" Or Target.Value = "Acidente" _
                Or Target.Value = "Quase-acidente" Or Target.Value = "Não Conformidade" Then
            Set myCells = Union(Range("T" & i), Range("U" & i), Range("V" & i), Range("W" & i))
            Application.EnableEvents = False
            myCells.Value = ""
            Application.EnableEvents = True
        Else
            Set myCells = Union(Range("T" & i), Range("U" & i), Range("V" & i), Range("W" & i))
            Application.EnableEvents = False
            myCells.Value = "NA"
            Application.EnableEvents = True
        End If

        Exit Sub
    End If
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/01/2013 1:46 pm
(@tiago_luz)
Posts: 40
Eminent Member
Topic starter
 

Estou até com vergonha de pedir, mas acabei me esquecendo que se na coluna estiver "P" estiver escrito "NC Cancelada" de T a W deve ficar NA também, senão fica em branco "". seria assim, se em B estiver "Quase-acidente" ou as outras palavras (aqui não se preocupa que eu consegui fazer o "OR"), de T a W fica em branco "", senão "NA", porém se futuramente for selecionado em "P", "NC cancelada", de T a W fica "NA" também. NA fórmula que eu tinha eu escrevi.

=SE($B3<>"";SE(OU(E($B3<>Dados!$A$6;$B3<>Dados!$A$7;$B3<>Dados!$A$2;$B3<>Dados!$A$12);$P3="NC cancelada");"NA";"");"")

Ah, sou o mesmo da macro para mesclar automaticamente...

Outra perguntinha, se eu precisar fazer outra Sub Worksheet_change, é possível, ou todos worsheet_change tem que estar obrigatoriamente na mesma Sub? tentei aqui mas fala que o título já existe.

abraços.

 
Postado : 07/01/2013 5:11 pm