Atualização de Dado...
 
Notifications
Clear all

Atualização de Dados

21 Posts
2 Usuários
0 Reactions
3,092 Visualizações
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Bom dia, estou precisando de uma ajuda para formular um código.

Eu tenho uma planiha base com vários dados de uma operação.

EX: Cód. // Cliente // Observações

E existe uma outra planilha que contém os mesmo dados porém com atualizações do campo de Observações.
Essa planilha é atualizada por outro setor e envia para nós podermos ver o que foi observado naquela data 'X'.

Código:

Preciso de um código na planilha base que adicione as observações da planilha do outro setor.

EX:

Dados que tem na planilha Base:

Cód. * Cliente * Observação
001 * João * 07.10 sem contato
001 * Maria * 10.10 tem interesse
002 * João *

Outra planilha:

Cód. * Cliente * Observação
001 * João * 13.10 contato ok, tem interesse
001 * Maria * 13.10 cliente desistiu
002 * João * 13.10 caixa postal

Planilha Base atualizada.

Cód. * Cliente * Observação
001 * João * 07.10 sem contato // 13.10 contato ok, tem interesse
001 * Maria * 10.10 tem interesse // 13.10 cliente desistiu
002 * João * 13.10 caixa postal

OBS: Preciso da condição de procura do Cód e Cliente (Pois podem ter código e clientes iguais, porém nunca o mesmo código com mesmo nome).
E vincule a observação atual com a atualizada.

Não sei como começar.

 
Postado : 13/11/2014 9:28 am
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Veriquei no modo de depuração.

Quando cdg = 101 a observação altera ok.

Proximo cdg está sendo "102" ai ele ficando dando loop umas 5 vezes e da erro.

É preciso acrescentar algum detalhe que se cdg não estiver em "Coluno()" ir para o próximo cdg.

Não sei se deu para entender edcronos

 
Postado : 13/11/2014 1:55 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

ve se tem diferenças de linhas de uma para outra

ou tenta trocar os dados importantes e disponibilizar sua planilha

essa linha somente faz a verificação dos dados com o array.

Adicionei um

"Else
Exit For"

Porém percebi que o:

For L = 1 To lf

Ele sempre fica ''1'' devido ao Exit For

Só falta arrumar para o segundo For continuar de onde parou. No caso L = 2

 
Postado : 13/11/2014 2:05 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Quase resolvido:

Para os feras de plantão deve ser algo fácil de resolver:

edcronos, eu invertir a ordem dos FOR e deu certo agora.

Porém, toda vez que o primeiro loop executa o NEXT o segundo loop volta para o inicio.

    Dim Coluno()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Sheets(2).Activate
    Linha2 = Cells(Rows.Count, 1).End(xlUp).Row
    Coluno = Range("A" & 2, "C" & Linha2).Value2

    Sheets(1).Activate
    Line = Cells(Rows.Count, 1).End(xlUp).Row

     t = 0
    For L = 1 To Linha2 - 1

        For n = 2 To Line

        cdg = Cells(n, 1).Value2
        nm = Cells(n, 3).Value2

            If cdg = Coluno(L, 1) Then
            If nm = Coluno(L, 2) Then
            Cells(n, 11).Value2 = Cells(n, 11).Value2 & "  //  " & Coluno(L, 3)
             t = 1
             End If
             Else
             End If
             If t = 1 Then t = 0: Exit For
        Next
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
 
Postado : 13/11/2014 2:24 pm
(@edcronos)
Posts: 1006
Noble Member
 

por isso seria importante analisar a planilha com mais dados

os laços For são para fazer leitura independerdes entres os dados

for Plan_principal
dados1,2,3...
for plan_atualizada
compara dados-x até achar uma correspondência ou acabar os dados da atualizada
next
next até acabar dados principal

seria mais ou menos isso

quando se acha um valor correspondente sai do laço for e na próxima verifica novamente
isso pq no exemplo que vc me mandou os cod não estavam organizados e se repetiam
então sempre tem que se refazer o laço para verificar todos os dados até achar uma correspondência exata
se não achar essa correspondência pula para o próximo dado a ser analisado

 
Postado : 13/11/2014 2:57 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

edcronos, só para finalizar o código existe a possibilidade de adicionar alguma linha de comando para SE algum cliente que esta na Array não for localizado avise através de msgbox no final do comando ?

Obrigado.

 
Postado : 14/11/2014 8:15 am
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Com a ajuda do Edcronos, mudei alguns detalhes e ficou assim:

Sub Observações()

On Error GoTo Aviso

    Dim Coluno()
    Application.ScreenUpdating = False

    Sheets("OBSERVAÇÕES").Activate
    Linha2 = Cells(Rows.Count, 1).End(xlUp).Row
    Coluno = Range("A" & 2, "C" & Linha2).Value2

    Sheets("BASE").Activate
    Range("A3").Select
    ActiveSheet.ShowAllData
    
Aviso:

On Error GoTo 0

     t = 0
    For L = 1 To Linha2 - 1

        For n = 4 To 79

        cdg = Cells(n, 1).Value2
        nm = Cells(n, 3).Value2

            If cdg = Coluno(L, 1) Then
            If nm = Coluno(L, 2) Then
            Cells(n, 11).Value2 = Cells(n, 11).Value2 & "  //  " & Coluno(L, 3)
             t = 1
             End If
             Else
             End If
             If t = 1 Then t = 0: Exit For
        Next
    Next
    
    Application.ScreenUpdating = True

End Sub

Na aba de Observações criei uma coluna que verifica se o nome do cliente contém na aba Base e coloquei uma formatação condicional. Para antes que executar a macro seja verificado os nomes divergentes por algum erro de digitação.

Obrigado.

 
Postado : 14/11/2014 9:35 am
Página 2 / 2