Olá, Feras!
Eu tenho uma pasta de trabalho com quase 10 anos de uso. À partir de 2013 comecei a automatizar processos com Macros VBA.
Essa planilha tem várias abas e uma delas tem um cadastro de mais de 56000 nomes com telefones.
Com o advento do nono dígito precisei acrescentá-lo e o fiz com a ajuda do fórum.
O problema é que fiz a conversão em outra planilha e depois copiei e colei os dados obtidos na planilha original (colar valores).
Fui muito mazanza, pois não fiz um backup.
Depois de disso, ao fazer a filtragem (comando que compara um número de telefone com os já cadastrados e traz o resultado em outra planilha junto com nome, data de cadastro e status) o código trava e dá erro 13 - tipos incompatíveis.
Já formatei os dados onde pude, deixando todos como texto, todos como número geral, nada adiantou. Acrecentei .Value às células citadas no código e nada.
Abaixo segue o código, porém se alguém tiver uma orientação que não precise mecher no código tá valendo.
O código trava no segundo "if", coloquei a informação ali para ajudar.
Sub FILTRA()
'COPIAR NOME DO INDICADOR PARA A CƒLULA C7
Plan8.Select
Application.ScreenUpdating = False
'DESPROTEGE A PLANILHA
ActiveSheet.Unprotect
Range("C7").Value = Range("K2")
'LIMPAR CONTEòDO DA òLTIMA BUSCA
Plan8.Range("I5:P65000").ClearContents
Plan8.Range("c13:C16").ClearContents
Plan8.Range("B18:C25").ClearContents
'INSERIR VALOR NAS CƒLULAS C5 E C6 (ONDE SE DIGITA OS FONES PARA BUSCA), PARA NÌO RETORNAR AS CƒLULAS VAZIAS NA BUSCA.
If Plan8.Cells(5, 3) = "" Then
Plan8.Cells(5, 3) = 11111111
End If
If Plan8.Cells(6, 3) = "" Then
Plan8.Cells(6, 3) = 11111111
End If
'ENCONTRAR òLTIMA LINHA NA PLANILHA REFERIDOS
ULTIMALINHA = Plan1.Cells(Rows.Count, 2).End(xlUp).Row
'VARIçVEL LINHA (lin = 5) ƒ ONDE OS DADOS SERÌO INSERIDOS
lin = 5
For i = 2 To ULTIMALINHA
'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
'PESQUISA FONE 1 NA PRIMEIRA COLUNA
'TRAVA JÁ NA PRIMEIRA LINHA DO IF. Em uma das tentativas eu acrescentei .Value depois dos parênteses e travou no próximo bloco, mas daí eu acrescentei no próximo e
'voltou a travar na primeira linha do If novamente.
If Plan1.Cells(i, 3) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
lin = lin + 1
End If
'PESQUISA FONE 1 NA SEGUNDA COLUNA
If Plan1.Cells(i, 4) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
lin = lin + 1
End If
'PESQUISA FONE 2 NA SEGUNDA COLUNA
If Plan1.Cells(i, 4) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
lin = lin + 1
End If
'PESQUISA FONE 2 NA PRIMEIRA COLUNA
If Plan1.Cells(i, 3) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
lin = lin + 1
End If
Next
'ENCONTRAR òLTIMA LINHA NA PLANILHA NEGRA
ULTIMALINHA = Plan4.Cells(Rows.Count, 1).End(xlUp).Row
'VARIçVEL LINHA (lin = 22) ƒ ONDE OS DADOS SERÌO INSERIDOS
lin = 22
For y = 2 To ULTIMALINHA
'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
'PESQUISA FONE 1 NA PRIMEIRA COLUNA NEGRA
If Plan4.Cells(y, 2) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
Plan8.Cells(22, 3) = "LISTA NEGRA"
lin = lin + 1
End If
'PESQUISA FONE 1 NA SEGUNDA COLUNA NEGRA
If Plan4.Cells(y, 3) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
Plan8.Cells(22, 3) = "LISTA NEGRA"
lin = lin + 1
End If
'PESQUISA FONE 2 NA PRIMEIRA COLUNA NEGRA
If Plan4.Cells(y, 2) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
Plan8.Cells(22, 3) = "LISTA NEGRA"
lin = lin + 1
End If
'PESQUISA FONE 2 NA SEGUNDA COLUNA NEGRA
If Plan4.Cells(y, 3) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
Plan8.Cells(22, 3) = "LISTA NEGRA"
lin = lin + 1
End If
Next
'PESQUISA E FILTRA PROCON
'ENCONTRAR òLTIMA LINHA NA PLANILHA PROCON
ULTIMALINHA = Plan3.Cells(Rows.Count, 2).End(xlUp).Row
'PESQUISA PROCON FONE 1
For x = 2 To ULTIMALINHA
If Plan3.Cells(x, 2) = Plan8.Cells(5, 3) Then
Plan8.Cells(13, 3) = "PROCON"
MsgBox "NÃO LIGUE! REGISTRADO NO PROCON", vbOKOnly, "PROCON"
End If
'PESQUISA PROCON FONE 2
If Plan3.Cells(x, 2) = Plan8.Cells(6, 3) Then
Plan8.Cells(14, 3) = "PROCON"
MsgBox "NÃO LIGUE! REGISTRADO NO PROCON", vbOKOnly, "PROCON"
End If
Next
'PESQUISA E FILTRA SE ƒ ALUNO OU NÌO E Dç A MENSAGEM "ƒ ALUNO" NA CƒLULA
'ENCONTRAR òLTIMA LINHA NA PLANILHA ALUNOS
'ENCONTRAR òLTIMA LINHA NA PLANILHA ALUNOS
ULTIMALINHA = Plan2.Cells(Rows.Count, 1).End(xlUp).Row
'VARIçVEL LINHA (lin = 22) ƒ ONDE OS DADOS SERÌO INSERIDOS
lin = 22
For y = 2 To ULTIMALINHA
'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
'PESQUISA FONE 1 NA PRIMEIRA COLUNA ALUNOS
If Plan2.Cells(y, 2) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
Plan8.Cells(23, 3) = "É ALUNO"
MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
lin = lin + 1
End If
'PESQUISA FONE 1 NA SEGUNDA COLUNA ALUNOS
If Plan2.Cells(y, 3) = Plan8.Cells(5, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
Plan8.Cells(23, 3) = "É ALUNO"
MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
lin = lin + 1
End If
'PESQUISA FONE 2 NA PRIMEIRA COLUNA ALUNOS
If Plan2.Cells(y, 2) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
Plan8.Cells(23, 3) = "É ALUNO"
MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
lin = lin + 1
End If
'PESQUISA FONE 2 NA SEGUNDA COLUNA ALUNOS
If Plan2.Cells(y, 3) = Plan8.Cells(6, 3) Then
'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
Plan8.Cells(23, 3) = "É ALUNO"
MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
lin = lin + 1
End If
Next
Application.ScreenUpdating = True
MsgBox "BUSCA CONCLUIDA!" + vbCrLf + "VOCÊ PODE FAZER OUTRA BUSCA OU SALVAR O REFERIDO ATUAL", vbOKOnly, "CONCLUIDO"
Range("C4").Select
ActiveSheet.Protect
End Sub