Página 1 de 1

Importar Somente Códigos Novos (Não Repetidos)

Enviado: 17 Jun 2019 às 17:39
por SandroLima
Boa tarde, colegas do fórum.

Baseado no conceito/uso de tabelas (assim como na Macro "InserirLinha" da planilha) gostaria da ajuda de vocês para fazer um macro (botão "Importar Novos Códigos") que:
1) Importasse somente Códigos ainda não importados (portanto, somente novos códigos) da Tabela "Atividade Diárias" para a Tabela "Atendimentos".
Obs: a rotina deve verificar códigos ainda não importados e copiar somente os novos Códigos. Apagar todos os campos ou linhas da tabela "Atendimentos" e importar novamente todos os dados não serviria pois algumas linhas serão acrescentadas manualmente na Tabela "Atendimentos".

2) Verificasse também durante a execução da rotina quais códigos existentes na Tabela Atendimentos não estão dispostos na Tabela "Atividades Diárias" e retornasse uma mensagem do tipo: o Código "XX-XXXXXXX" da linha tal não encontra-se relacionado na Tabela "Atividades Diárias".

3) E ao final da macro uma msg do tipo: Códigos Importados com sucesso ou Não existem novos códigos a serem importados.

Segue planilha anexa para testes.

Muito obrigado a quem puder ajudar.

Re: Importar Somente Códigos Novos (Não Repetidos)

Enviado: 18 Jun 2019 às 09:14
por SandroLima
Bom dia, pessoal.

Precisando bastante dessa rotina... alguém poderia me ajudar?

Importar Somente Códigos Novos (Não Repetidos)

Enviado: 18 Jun 2019 às 16:46
por werlewow
Olha, eu não entendo tanto de vba, mas consigo me virar com formulas e vba juntos.
Minha sugestão, provavelmente não é a melhor, mas da certo:
Fça um procv na plan ativ diarias que busque cada linha na plan atendimentos, algo tipo assim:

=SEERRO(PROCV(B15;ATENDIMENTOS!B8:B13;1;FALSO);"ver")

Ou seja, se o procv não achar, significa que não foi lançado ainda.

Depois você cria uma macro que filtre para pegar apenas esses valores com "ver" na coluna A da planilha ativ diarias.
e em seguida, na mesma macro, vc manda copiar apenas os valores visiveis.
Seguindo a macro, vc manda ela ir na prox linha disponível na tabela de atendimento e colar apenas valores.
com isso você mata seu problema nº 1
Para o problema 2, eu faria um procv ao contrário, a mesma sacada, o que ele não achar, vc coloca algo tipo "não consta em diárias" ou algo assim.
e o ultimo caso é só colocar no final do cód vba: msgbox "Códigos Importados com sucesso"

Segue exemplo de como colocar o filtro e copiar apenas valores visiveis:

ActiveSheet.Range("$a$14:$an$255").AutoFilter Field:=1, Criteria1:= _
"ver"
'aqui vai add filtro naquele range e filtrar na coluna 1 (field:=1) para celulas com "ver".

Range("B14:an250").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
'aqui ele copiar apenas os valores filtrados, visiveis
Sheets("atendimentos").Select

Range("b7:b" & Range("b1048576").End(xlUp).Row).Select
'seleciona prox linha disponivel, obs: talvez n dê certo para tabelas, ai eu declaro uma variavel e vou somando de um em um verificando se célula é vazia ou não..

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'cola somente valores


é isso, tem muita coisa pra adaptar nesse código pra fazer funcionar, mas ja da uma base pra vc.
fui..

Re: Importar Somente Códigos Novos (Não Repetidos)

Enviado: 18 Jun 2019 às 19:04
por SandroLima
Boa noite.

Obrigado pela atenção e tentativa de ajudar, werlewow.

Entendi a sua explicação embora não saber como aplicá-la.

Ainda assim para evitar trabalhar com colunas adicionais (já são muitas) vou aguardar e ver se alguém teria uma solução com macro mesmo.

Mais uma vez obrigado.

Re: Importar Somente Códigos Novos (Não Repetidos)

Enviado: 19 Jun 2019 às 12:35
por SandroLima
Boa tarde, pessoal.

Alguém teria uma solução com macro para essa atividade?