Criar histórico dos Dados incluídos


#1

Pessoal, espero que estejam bem! Tenho uma planilha onde registro alguns dados todos os dias, mas não cria um histórico, ou seja, não é dependente do tempo. Na coluna A (NºContratos), coluna B (USPrevista), coluna C (USMedida), coluna D (USPendente). São várias linhas, ou seja, vários contratos. A Coluna A é fixa e os dados ds colunas B, C e D são atualizadas diariamente, no entanto, não é salvo um histórico por data, os arquivos se sobrepõe. Poderiam criar uma macro onde esses dados seriam registrados em uma outra aba, da seguinte forma:

A1 (Vazio) B1 (Data1 da inclusão) C1 (Data1 da inclusão) D1 (Data1 da inclusão)
A2 (NºContratos) B2 (USPrevista) C2 (USMedida) D2 (USPendente)
A3 … B3 … C3 … D3

E1 (Data1 da inclusão) F1 (Data1 da inclusão) G1 (Data1 da inclusão)
F2 (USPrevista) G2 (USMedida) D2 (USPendente)
F3 … G3 … D3

É possível e podem nos ajudar?
Abraço


#2

Boa tarde…
Dá um print na tela para a gente ver o que vc tem, pois tem duplicidade nas suas informações postadas.

abs


#3

Disponibilizo um exemplo simplificado no link:

https://drive.google.com/file/d/1-RAOx80Jy-e4yqRhSIeX-sONsjPrxnR7/view?usp=sharing

Exemplo.xlsx

Obrigado.


#4

Bom dia @Chico38.

Vc inclui novos contratos no final da planilha ? Qual o tamanho, em linhas, desta planilha valores ? Estou te perguntando isto pois há vários modos de fazer, e dependendo da sua resposta vou ver um modo mais fácil de fazer.
Os contratos estão em ordem crescente sempre ? Todas as planilhas tem o mesmo numero de linhas ? Se entrou um novo contrato, vc coloca ele em todas as planilhas e na mesma ordem ?
Se for tudo igual, eu faço uma macro com control C control V, praticamente não desenvolvo nada mais que isto…
No aguardo


#5

Bom dia Chico…
Como vc não respondeu, fiz do seguinte modo:
Assumindo que as planilhas de arquivo tenham o mesmo numero de colunas.
Estou procurando os contratos em todas elas.
Assumindo que os nomes das planilhas sejam plan1, plan2, plan3 e plan4.
Quando não achar o contrato nas outras planilhas, dou uma mensagem.
Sendo assim, segue o codigo.
Crie um botão na plan1 e copie este código para dentro dele.

Dim contrato As Long

Plan1.Select
ultcol = Plan2.Cells(2, 1).End(xlToRight).Column + 1

For i = 3 To Range("a3").End(xlDown).Row
    Plan1.Select
    contrato = Cells(i, 1).Value
' BD prevista
    Plan2.Select
    chave = 0
    For j = 3 To Range("a3").End(xlDown).Row
        If contrato = ActiveSheet.Cells(j, 1).Value Then
            ActiveSheet.Cells(j, 1).Select
            ActiveSheet.Cells(j, ultcol) = Plan1.Cells(i, 2)
            chave = 1
            Exit For
        End If
    Next
    If chave = 0 Then MsgBox "Não encontrei contrato em BD Prevista: " & contrato
' BD medida
    Plan3.Select
    chave = 0
    For j = 3 To Range("a3").End(xlDown).Row
        If contrato = ActiveSheet.Cells(j, 1).Value Then
            ActiveSheet.Cells(j, 1).Select
            ActiveSheet.Cells(j, ultcol) = Plan1.Cells(i, 3)
            chave = 1
            Exit For
        End If
    Next
    If chave = 0 Then MsgBox "Não encontrei contrato em BD Medida: " & contrato
' BD medida
    Plan4.Select
    chave = 0
    For j = 3 To Range("a3").End(xlDown).Row
        If contrato = ActiveSheet.Cells(j, 1).Value Then
            ActiveSheet.Cells(j, 1).Select
            ActiveSheet.Cells(j, ultcol) = Plan1.Cells(i, 4)
            chave = 1
            Exit For
        End If
    Next
    If chave = 0 Then MsgBox "Não encontrei contrato em BD Pendente:" & contrato
Next

Plan2.Cells(1, ultcol) = Plan1.Cells(1, 2)
Plan3.Cells(1, ultcol) = Plan1.Cells(1, 2)
Plan4.Cells(1, ultcol) = Plan1.Cells(1, 2)

Plan2.Cells(2, ultcol) = Plan1.Cells(2, 2)
Plan3.Cells(2, ultcol) = Plan1.Cells(2, 3)
Plan4.Cells(2, ultcol) = Plan1.Cells(2, 4)
Plan1.Select
MsgBox "Pronto, tudo copiado do dia " & Cells(1, 2)

abs


#6

Boa tarde @lporto.
Favor desculpe-me pela demora…

Respondendo, sim eu incluo os novos contratos no final da planilha.
Ela cresce com o passar dos meses, mas não passa de 600 linhas
Os contratos estão em ordem crescente.
A necessidade é que todas tenham a mesma quantidade de linhas e mesma relação e quantidade de contratos, na mesma ordem.

Testei o que você fez e deu certo! No entanto,

A sacada é que tivéssemos um histórico, ou seja, ao invés de colar sobre o valor anterior, ele colasse ao lado do ultimo, registrando a data em que medido. E assim fosse registrando cada valor, um ao lado do outro, com base na data em que foi feita a medição .

Segue exemplo: https://drive.google.com/file/d/1WUtvQjUVYHDi1ODXsxYoVeYmXs8hQ8F7/view?usp=sharing


#7

Olá Chico, bom dia.
Ué, o programa está para jogar uma coluna após a ultima, que é esta linha:
ultcol = Plan2.Cells(2, 1).End(xlToRight).Column + 1
A não ser que as planilhas não tenham o mesmo numero de colunas… As planilhas de histórico tem tamanhos diferentes de colunas ?
Aguardo a sua resposta
abs


#8

Bom dia!
As planilhas tem os seguinte, a de valores tem sempre 4 colunas, nº do contrato e as colunas de prev, medid e pend. As 3 demais planilhas tem uma coluna fixa, a de contrato, e as demais colunas deveriam ser criadas para cada dia em que tivesse registro ou que a macro rodasse.
No link acima eu salvei a planilha.
Abraço


#9

Boa tarde Chico.
Aqui está funcionando perfeitamente… Veja a planilha que eu fiz…

https://drive.google.com/open?id=1DxfABh-O2eMDuhzmyOg-ElLYIayG_avv

Rode a macro várias vezes e verá que ele sempre joga ao final das outras…

qqr coisa me avise.


#10

Show de bola!!! É isso mesmo que estou precisando… Muito Obrigado Iporto.