Notifications
Clear all

Pesquisa 3 termos na mesma linha

13 Posts
2 Usuários
0 Reactions
2,387 Visualizações
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Olá colegas de fórum,

Imagine uma planilha (Plan1) com 3 colunas;
A,B,C (NOME, DATA1, DATA2)

Agora imagine que essa planilha recebe informações de um Userform, por meio de 3 TextBox;
TextBox1, TextBox2, TextBox3

Eu preciso que ao clicar em um botão, antes de liberar o cadastro ele verifique na minha planilha se essas 3 informações já existem na MESMA linha.

Eu já arranquei os cabelos da cabeça mas não consegui tal proeza. Imagino que seja uma coisa super simples, mas infelizmente não consegui vislumbrar a solução.
Desde já agradeço agradeço a ajuda dos colegas.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 01/08/2014 12:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

bilokas, jeito de ser feito isto existe, o porem será a demanda de processamento para efetuar as comparações, pense no seguinte:
O ideal seria:
1) concatenar o resultado dos 3 textbox;
2) realizar a Pesquisa pelo Nome (alias, não citou se é por esta coluna a pesquisa padrão, estou supondo)
...Se encontrar, armazenar os dados das 02 colunas ao lado Data1 e Data2 e concatenar e então fazer o comparativo.

Agora, supondo que temos 10 Nomes iguais:
A pesquisa para ao encontrar a primeira correspondência ou pode haver mais linhas iguais ?

Porque seu cadastro não pode se basear somente pelo Nome ou pelo ID (cod de cadastro) ?

[]s

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

 
Postado : 01/08/2014 1:17 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Obrigado por responder Mauro,

O objetivo da planilha é o seguinte: Controle lançamento de passagens aéreas.
Aqui temos funcionários que viajam, ou seja, NOME, data de IDA e data de VOLTA. Essas 3 informações NUNCA podem ser repetidas na mesma linha da planilha.
Agora pode existir sim o mesmo Nome viajando várias vezes no decorrer de um mês, mas não nas mesmas datas.

O que ocorre é que preciso de uma estrutura que impeça de a planilha receber essas 3 informações, caso já exista na mesma linha.
No caso a pesquisa tem que ser pelas 3 informações.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 01/08/2014 1:29 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

No caso, imagine que eu tenho inputado nos meus TextBox, PEDRO, DATA 1 e DATA 2.

Dai na planilha eu já tenho a seguinte base:

COLUNA A | COLUNA B | COLUNA C
RAFAEL_____DATA 3____DATA 4
MARCOS____DATA 2____DATA 5
PEDRO______DATA 7____DATA 8
CARLOS_____DATA 5____DATA 6
PEDRO______DATA 1____DATA 2
JOSE_______DATA 8_____DATA9
PEDRO______DATA 4____DATA 5
PEDRO______DATA 7____DATA8

Quando eu clicar no botão, a rotina tem que verificar as 3 informações, identificar que já existe e me avisar

Só para completar, abaixo está a minha rotina de Cadastro (as 3 informações eu digo que não podem ser repetidas são txt_Servidor, DTPicker_Ida, DTPicker_Volta)

Private Sub botao_Cadastrar_Click()
On Error GoTo ErroNoSistema
        Dim Linha

        Linha = Sheets("dados").Range("A" & Rows.Count).End(xlUp).Row
        Linha = Linha + 1

        Sheets("dados").Cells(Linha, 1).Value = txt_AnoReferencia.Value
        Sheets("dados").Cells(Linha, 2).Value = Remove_Acentos(ComboBox_MesReferencia.Value)
        Sheets("dados").Cells(Linha, 3).Value = txt_Processo.Value
        Sheets("dados").Cells(Linha, 4).Value = Remove_Acentos(txt_SetorDemandante.Value)
        Sheets("dados").Cells(Linha, 5).Value = Remove_Acentos(txt_Servidor.Value)
        Sheets("dados").Cells(Linha, 6).Value = Remove_Acentos(txt_CidadeDestino.Value)
        Sheets("dados").Cells(Linha, 7).Value = Format(DTPicker_Ida.Value, "dd/mm/yyyy")
        Sheets("dados").Cells(Linha, 8).Value = Format(DTPicker_Volta.Value, "dd/mm/yyyy")
        Sheets("dados").Cells(Linha, 9).Value = txt_QuantidadeDiaria.Value
        Sheets("dados").Cells(Linha, 10).Value = txt_ValorDiaria.Value

        ThisWorkbook.Save
        MsgBox "Registro incluído no sistema com sucesso." & vbCrLf & vbCrLf & "Clique em OK para continuar.", vbInformation, "CONFIRMAÇÃO"
        Unload Me
        frmCadastro.Show
    End If

Exit Sub

ErroNoSistema:
        MsgBox "O sistema encontrou um Erro de execução." & vbCrLf & "Contate o desensolvedor do projeto." _
        & vbCrLf & vbCrLf & "Clique em OK para encerrar a aplicação.", vbCritical, "ERROR" '

        Application.DisplayAlerts = False
        ThisWorkbook.Save
        Application.Quit
Resume Next
End Sub


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 01/08/2014 1:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Entendi, agora já estou de saida do serviço e se nenhum outro te enviar uma solução mais tarde eu envio, já até fiz um esboço, mas não adianta anexar agora.

Só me de algumas informações: Já existem dados em seu modelo ou irá começar do zero ?

[]s

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

 
Postado : 01/08/2014 1:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Estava respondendo e não vi sua resposta, mas fica valendo o que eu postei, só mais tarde.

[]s

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

 
Postado : 01/08/2014 1:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

De acordo com este tópico, seu problema já esté resolvido...
viewtopic.php?f=10&t=12717

Não está mais ? ;-)

FF

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

 
Postado : 01/08/2014 1:54 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Entendi, agora já estou de saida do serviço e se nenhum outro te enviar uma solução mais tarde eu envio, já até fiz um esboço, mas não adianta anexar agora.

Só me de algumas informações: Já existem dados em seu modelo ou irá começar do zero ?

[]s

Tudo bem Mauro, caso ninguém responda até, fico no aguardo.

E sim a planilha atualmente já possui aproximadamente 3000 linhas (com informações padronizadas, ou seja, tudo maiusculo, sem acentuação, sem traços, pontos, virgulas, etc.)


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 01/08/2014 1:55 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

De acordo com este tópico, seu problema já esté resolvido...
http://www.planilhando.com.br/forum/vie ... 10&t=12717

Não está mais ? ;-)

FF

Desculpe teimar com você ontem fernando, mas já estava tão embaralhado nos códigos que achei que tinha resolvido.

O problema continua em aberto.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 01/08/2014 1:57 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Blz, nunskenta...
Siga o passo a passo:

- Crie uma planilha chamada Apoio (pode ser o nome que quiser)
- Em A1 até A3, digite: Servidor, Data Ida, Data2
- Em A4 digite a fórmula matricial:

=SEERRO(CORRESP(A1&A2&A3;Dados!E1:E10000&Dados!G1:G10000&Dados!H1:H10000);0)

Não esqueça, é matricial, ou seja, cole esse texto na célula e finalize com Ctrl+Shift+Enter

Esta célula é sua validadora... Ao tentar cadastrar pessoasl, mande o código escrever em A1, A2 e A3 respectivamente o nome e as datas de ida e retorno.
A célula A4 irá retornar um número se o servidor com as datas já existir, e zero quando não existir.

Assim, vc escreve em A1, A2 e A3, daí vc lê A4.
Se A4 for igual a 0, pode cadastrar. Se A4 for diferente de 0, não cadastre, mostre uma msg qualquer...

Essa é a lógica... Então, a primeira parte é manual e pontual, ou seja, somente uma vez. (Criar a planilha, etc, vc consegue fazer)
A segunda parte envolve alterações simples no seu código. Veja se consegue fazer, se não conseguir, eu mando como vai ficar...

FF

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

 
Postado : 01/08/2014 2:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rafael, vamos por parte:

1°) Como estava de saida, vi rapidamente e não vi que tinha postado uma rotina, que a principio não tem nada ver com o solicitado neste tópico.
2°) Você podia ter dito que era uma questão já discutida em outro Tópico, e como o mesmo está Trancado por ter dado como Resolvido, poderia solicitar para Destrancar e continuar a questão nele.
Pelo que li no outro tópico, e agora com a dica do fernando acredito ser mais viável a dica dele, não testei pois estou com meu excel 2007 corrompido e ainda não reinstalei, pois como eu disse acima, uma rotina deste porte irá demandar um processamento consideravel, pela quantidade de dados a confrontar.

Resumindo, como eu prometi e já tinha iniciado um esboço baseado nas primeiras informações deste tópico, segue um modelo que irá fazer o que quer, só que irá ter de ajustar ao seu modelo, basicamente são rotinas independenntes que irão pesquisar e dependendo do resultado você terá de direcionar a sua rotina de cadastrar ou cancelar.
Para este modelo utilizei uma Function que eu havia adaptado de um código do Tomas e que eu havia adicionado a Biblioteca do Forum:
Function para Pesquisa - viewtopic.php?t=2816&p=12537
Function Pesquisar InputBox e TextBox - viewtopic.php?t=2877&p=45646
Até iria indicar esta Function para o Fernando colocar no modelo que ele está criando de rotinas reutilizaveis, pois ela é bem maleável.

Então segue o o modelo, o restante é contigo.
Pesquisar por 3 criterios

[]s

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

 
Postado : 01/08/2014 10:21 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Olá amigos do fórum,
Gostaria de agradecer ao fernando e ao mauro pela disposição em ajudar. Peço desculpas pela demora no feedback, mas estou tentando as duas respostas dadas e já informo sobre a conclusão do problema.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 04/08/2014 6:59 am
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Peço desculpa pela demora no feedback,
As duas soluções apresentadas pelos colegam atenderam a necessidade, mas acabei optando pela do amigo Mauro Coutinho, fiz as devidas adaptações e está tudo OK agora.

Agradeço novamente aos colegas pela disponibilidade em ajudar.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 06/08/2014 11:47 am