Notifications
Clear all

Pesquisa de CEP em 3 locais do formulário

6 Posts
2 Usuários
0 Reactions
2,200 Visualizações
(@glaucia)
Posts: 12
Eminent Member
Topic starter
 

Preciso que a busca de endereço pelo CEP funcione em 3 lugares do formulário. Não sei onde tenho que alterar a fórmula para isso. Quando preencho o 1ª campo do CEP, automaticamente o 2ª e o 3ª saem com os mesmos dados. Segue planilha em anexo.
Tenho mais uma dúvida. Gostaria de clicar no campo que deve ser preenchido e quando desse Tab, fosse automaticamente para o próximo campo de que deve ser preenchido. Ele está indo para as outras células.

 
Postado : 04/09/2013 2:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alterada a procura.
Para a navegação é necessario que , bloqueie antes de proteger a planilha as celulas que não terão dados, e ai proteja a planilha

 
Postado : 04/09/2013 4:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Reinaldo, muito boa a solução, porem nos testes que fiz estava me dando erro, não sei se ocorreu com você ou é devido a versão do excel, utilizei o 2007.

O erro em questão que identifiquei é que se na aba Consulta os Ranges com os resultados anteriores não forem limpos é dado como CEP não localizado, então fiz umas alterações na rotina Sub lsPesquisaCEP(ByVal sCEP As String) e agora está funcionando corretamente, tambem adicionei instrução para limparmos os dois campos seguintes do formulário quando do preenchimento do Primeiro Campo, mas isto é só um capricho para os CEps anteriores não continuarem aparecendo.

Segue a rotina adaptada :

Sub lsPesquisaCEP(ByVal sCEP As String)
    Dim Linha As Integer
    On Error GoTo TratarErro

If nLin = 20 Then
    'Limpar os Campos dos CEPs Seguintes
    Sheets("Formulario").Range("D57:F57").ClearContents
    Sheets("Formulario").Range("D77:F77").ClearContents
    
    'Limpar o Range de Resultado
    'Qdo da primeira consulta se os ranges estiverem preenchidos dara erro
    Range("Consulta!a1:H3").Clear
    Linha = 1

ElseIf nLin = 57 Then
    'Limpar o Range de Resultado
    'Qdo da Segunda consulta se os Ranges estiverem preenchidos dara erro
    Range("Consulta!a2:H3").Clear
    Linha = 2

Else
    
    'Limpar o Range de Resultado
    'Qdo da Terceira consulta se os Ranges estiverem preenchidos dara erro
    Range("Consulta!a3:H3").Clear
    Linha = 3

End If

'Range("Consulta!a2:H3").Clear
    
    If sCEP <> "" Then
        With ActiveWorkbook.XmlMaps("webservicecep_Mapa")
            .ShowImportExportValidationErrors = False
            .AdjustColumnWidth = True
            .PreserveColumnFilter = False
            .PreserveNumberFormatting = False
            .AppendOnImport = False
        End With
        ActiveWorkbook.XmlImport URL:= _
            "http://republicavirtual.com.br/web_cep.php?cep=" & sCEP, ImportMap:= _
            Nothing, Overwrite:=False, Destination:=Range("Consulta!$a$" & Linha)
            
    End If
        
    Calculate
    
Sair:
    Exit Sub
TratarErro:
    MsgBox "CEP não cadastrado!"
    GoTo Sair
    Resume
End Sub

Faça novos testes em seu modelo sem alterar a rotina e veja se procede o erro que citei acima.

[]s

 
Postado : 04/09/2013 5:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Olá Mauro,
Como sempre perfeita sua observação, bem como a solução.
Realmente se não for limpa a consulta anterior, a nova gera o erro reportado.
Eu somente inibi a linha para evitar limpar os dados antes da terceira consulta, e não testei completa.

 
Postado : 04/09/2013 6:42 pm
(@glaucia)
Posts: 12
Eminent Member
Topic starter
 

Funcionou, só não consegui que limpe os seguintes campos quando clico em inserir, eles continuam preenchidos, não consegui localizar o erro.
Campo RG e CPF no cadastro de LOCATÁRIO
Campo Valor no cadastro de Imóvel.

O restante todos limpam.

 
Postado : 05/09/2013 12:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Creio que quando diz Locatário, está se referindo ao RG/CPF do Conjuge.
Na sua rotina está "limpando" J4 e J16 porem os dados/valores estão em I14/I16
Então altere o trecho:

...
Range("Formulario!D12").Value = "" 'Locatário / Cônjuge
Range("Formulario!D14").Value = "" 'nacionalidade
Range("Formulario!D16").Value = ""  'profissão
Range("Formulario!D18").Value = "" 'estado civel
Range("Formulario!I14").Value = "" 'rg
Range("Formulario!I16").Value = "" 'cpf
.... 

e o valor não está relacionado na "limpeza", precisa ser incluido

...Range("Formulario!I87").Value = "" 'Vencimento
    Range("Formulario!D89").Value = "" 'Locador
    Range("Formulario!I89").Value = "" 'Valor Locação
...
 
Postado : 05/09/2013 1:53 pm