locked
Dúvida sobre replicação de dados RRS feed

  • Pergunta

  • Amigos,

     

    Já alguns dias tenho me deparado com esse probleminha, porém, em situações diferentes.

     

    A situação que pretendo é a seguinte:

     

    A partir de uma planilha de entrada de dados (ENTRADA), onde são digitados todos os dados necessários, gostaria de replicar apenas algumas entradas em outra planilha (OBS), satisfazendo um filtro de dados.

     

    Como exemplo, teria o seguinte.

     

    ENTRADA

    Data                      Codigo                 HoraInicio           HoraFim                    ...

    12/06/2008         20                           12:30                     14:40                     ...

    12/06/2008         12                           14:40                     16:35                     ...

    12/06/2008         6                             16:35                     17:30                     ...

    12/06/2008         20                           17:30                     24:00                     ...

    13/06/2008         5                             24:00                     05:45                     ...

    13/06/2008         20                           05:45                     06:15                     ...

     

     

    OBS (planilha com filtro para o código 20)

    Data                      Codigo                 HoraInicio           HoraFim              OBS

    12/06/2008         20                           12:30                     14:40                     Parada operacional

    12/06/2008         20                           17:30                     18:45                     Parada mecânica

    13/06/2008         20                           05:45                     06:15                     Parada revisão preventiva

     

    Esta planilha OBS seria uma planilha eventos, onde devido a um evento X (no caso do exemplo, 20) ele copie para a planilha OBS essa ocorrência, e posteriormente, eu digite uma observação referente ao evento, uma justificativa.

     

    Qual a maneira de fazer isso acontecer, via macro ou existe alguma fórmula para isso?

     

    Att.

    Rafhael

     

    segunda-feira, 16 de junho de 2008 18:09

Respostas

  • Raphael,

    Fiz algumas modificações no código e usei a coluna E da Plan1 para determinar o status da transferência. Se o valor for transferido aparecerá a sigla TR na correspondente linha.

    O código alterado é:

    Code Snippet
    Sub TransferirValores()
    Dim i As Integer, L As Integer
    For i = 2 To Plan1.Cells(Rows.Count, 1).End(xlUp).Row
        If Plan1.Cells(i, 5) <> "TR" Then
            If Plan1.Cells(i, 2) = Range("Código") Then
                L = Plan2.Cells(Rows.Count, 1).End(xlUp).Row + 1
                Plan2.Cells(L, 1) = Plan1.Cells(i, 1)
                Plan2.Cells(L, 2) = Plan1.Cells(i, 2)
                Plan2.Cells(L, 3) = Plan1.Cells(i, 3)
                Plan2.Cells(L, 4) = Plan1.Cells(i, 4)
                Plan1.Cells(i, 5) = "TR"
            End If
        End If
    Next i
    End Sub

     

     


    O arquivo está disponível em:

    http://www.4shared.com/file/51566715/29b56f21/TransfereValores.html

    [ ]s

     

    terça-feira, 17 de junho de 2008 17:23

Todas as Respostas

  • Meu caro,

    Veja se este arquivo te atende: http://www.4shared.com/file/51566715/29b56f21/TransfereValores.html

    O Código de macro associado é:

    Code Snippet
    Sub TransferirValores()
    Dim i As Integer, L As Integer
    For i = 2 To Plan1.Cells(Rows.Count, 1).End(xlUp).Row
        If Plan1.Cells(i, 2) = Range("Código") Then
        L = Plan2.Cells(Rows.Count, 1).End(xlUp).Row + 1
        Plan2.Cells(L, 1) = Plan1.Cells(i, 1)
        Plan2.Cells(L, 2) = Plan1.Cells(i, 2)
        Plan2.Cells(L, 3) = Plan1.Cells(i, 3)
        Plan2.Cells(L, 4) = Plan1.Cells(i, 3)
        End If
    Next i
    End Sub

     

     


    [ ]s

     

    segunda-feira, 16 de junho de 2008 20:21
  • Olá Adilson,

     

    Ótima solução. Funcionou para a replicação.

     

    Porém, precisamos inserior um condição que verifique o que já foi incluído, pois, atualmente, se insiro um nome registro e peço a replicação, ele inseri novamente todos os outros registros já inseridos no passado.

     

    Como fazer isso essa verificação?

     

    Att.

    Rafhael

     

    terça-feira, 17 de junho de 2008 13:29
  • Raphael,

    Fiz algumas modificações no código e usei a coluna E da Plan1 para determinar o status da transferência. Se o valor for transferido aparecerá a sigla TR na correspondente linha.

    O código alterado é:

    Code Snippet
    Sub TransferirValores()
    Dim i As Integer, L As Integer
    For i = 2 To Plan1.Cells(Rows.Count, 1).End(xlUp).Row
        If Plan1.Cells(i, 5) <> "TR" Then
            If Plan1.Cells(i, 2) = Range("Código") Then
                L = Plan2.Cells(Rows.Count, 1).End(xlUp).Row + 1
                Plan2.Cells(L, 1) = Plan1.Cells(i, 1)
                Plan2.Cells(L, 2) = Plan1.Cells(i, 2)
                Plan2.Cells(L, 3) = Plan1.Cells(i, 3)
                Plan2.Cells(L, 4) = Plan1.Cells(i, 4)
                Plan1.Cells(i, 5) = "TR"
            End If
        End If
    Next i
    End Sub

     

     


    O arquivo está disponível em:

    http://www.4shared.com/file/51566715/29b56f21/TransfereValores.html

    [ ]s

     

    terça-feira, 17 de junho de 2008 17:23
  • Olá Adilson,

     

    Funcionou perfeitamente. Obrigado pela ajuda.

     

    Att.

    Rafhael

    quarta-feira, 18 de junho de 2008 19:26