none
Macro com verificação de valores das células antes de colar RRS feed

  • Pergunta

  • Boa noite,

    Eu tenho uma dúvida à respeito da criação de uma macro. Vou explicar melhor oq desejo fazer, para saber se isso é possível.

    Eu tenho uma planilha padrão, na qual cada coluna representa um dia, sendo que esta será utilizada até o fim de 2014. Dessa forma, ela apresenta datas na primeira linha de cada coluna, sendo assim as demais linhas sao utilizadas para inserir os dados, por exemplo, linha 4 "Qtde de lapis em estoque", linha 5 "Qtde de canetas no estoque"...

    Essa planilha padrão será utilizada para reuniões de controle diário, porém eu devo inserir dados provenientes de uma planilha de controle diário.

    Por exemplo, se hoje é dia 03/03/2014, em baixo desta data vai existir todos os dados que eu preciso colocar na planilha padrão, porém estes dados devem ser colados exatamente abaixo da coluna apresentando essa mesma data.

    Enfim, acredito ter explicado um pouco da minha situação.

    Minha dúvida é se existe alguma maneira de fazer uma macro que vai ler a data desta célula diária e procura-la na planilha padrão (por exemplo para as células B1:AA1, ela conseguirá identificar a data exata), então, ao achar a célula com valor idêntico, ela copiará as células abaixo da planilha diária para a planilha padrão

    Eu acredito que exista algum tipo de laço para fazer essa procura de dados até que sejam iguais, porém não tenho tanta habilidade com VBA e além disso, eu precisaria colar os valores abaixo da referente célula. (não sei fazer)

    Desde já eu gostaria de agradecer imensamente às pessoas que pelo menos leram meu tópico e agradecer ainda mais àquelas que me ajudarem

    Muito obrigado

    Tentei fazer uma situação na planilha que envio via 4shared. 


    Espero que possam entender melhor a minha ideia. Expliquei um pouco mais dentro da planilha também

    LInk:www.4shared.com/file/s7NJK5bvba/...ia_co.html? 

    quarta-feira, 5 de março de 2014 03:00

Todas as Respostas

  • Olá, boa noite.

    Existem várias formas de realizar a busca que vc precisa. Vou descrever duas. Use a que melhor te atender:

    Intervalo = "B1:AA1"
    DataProc = 3
    
    Item = WorksheetFunction.Match(DataProc, Range(Intervalo), 0)   'Retorna a posição no vetor

    ou

    Intervalo = "B1:AA1"
    DataProc = 3
    
    For Each Data In Range(Intervalo)
        
        If Data = DataProc Then
    
            'Coloque aqui o que deseja fazer...
            
        End If
    
    Next Data

    Um abraço.


    Filipe Magno

    quarta-feira, 5 de março de 2014 03:51
  • Bom dia Filipe,

    Desde já eu gostaria de te agradecer pela atenção, porém eu não entendi muito bem o funcionamento dessa macro.

    Na verdade eu gostaria de copiar as células abaixo da data localizada na PLANILHA DIÁRIA. Então, o objetivo é que a macro leia esta célula e procure a mesma data na PLANILHA PADRÃO. Assim que ela achar a mesma data (ou seja, ela deve percorrer o intervalo "B1:AA1" até achar a mesma data na PLANILHA PADRÃO), por isso é necessário um contador, pois a macro deverá copiar as células da PLANILHA DIÁRIA (células marcadas) para a coluna que apresentar a mesma data na PLANILHA PADRÃO.

    Como fazer um contador para colunas? Como posso fazer este contador para que a macro cole as células exatamente nas células abaixo da referida data?

    Lembrando que desejo fazer uma cópia da PLANILHA DIÁRIA para a PLANILHA PADRÃO.

    Eu havia achado essa macro, porém eu não sei adaptá-la para a minha situação:

    Sub CopiarCorp()
        Dim i As Integer
        Dim k As Integer
       
        'Variável para controlar a linha de destino
        k = 14
       
        'Percorre "Plan1" da linha 14 até a 316
        For i = 14 To 316
       
            'Se o valor das células das colunas "S" for igual a X e Y
            If Sheets("Planilha Padrão").Cells(i, "S").Value = Sheets("Planilha Diária").Cells(i, "S").Value Then
           
                'Copia a linha "i" no intervalo que compreende as colunas I a J
                'para linha de destino a partir da coluna "k"
                
    Sheets("Sales_Credit_Final").Cells(k, "A").Value = Sheets("Sales_Credit_v1").Cells(i,"I").Value
                Sheets("Sales_Credit_Final").Cells(k, "B").Value = Sheets("Sales_Credit_v1").Cells(i, "J").Value

                'Incrementa o valor de "k" para que o intervalo seguinte seja copiado na linha de baixo.
                k = k + 1
            End If
        Next
    End Sub

    quarta-feira, 5 de março de 2014 11:44
  • Terá que adequar para a sua planilha real, pois no caso da sua planilha de teste só haviam 4 células para copiar, coloquei o evento para quando abrir a planilha, se quiser ver o efeito, mude a data da sua máquina e abra a planilha novamente.

    segue:

    http://www.sendspace.com/file/j1oit7

    quarta-feira, 5 de março de 2014 12:46
  • Terá que adequar para a sua planilha real, pois no caso da sua planilha de teste só haviam 4 células para copiar, coloquei o evento para quando abrir a planilha, se quiser ver o efeito, mude a data da sua máquina e abra a planilha novamente.

    segue:

    http://www.sendspace.com/file/j1oit7

    Boa tarde Bruno,

    Desde já muito obrigado pela ajuda.

    Porém, acredito que minha explicação deve ter ficado meio confusa. Na verdade eu preciso copiar os dados da PLANILHA DIÁRIA para a PLANILHA PADRÃO (você fez o contrário). A grande dificuldade que eu tenho encontrado é que eu precisaria de um contador conforme o excel vai tentando achar a data da Planilha Diária nas colunas da Planilha Padrão. Então, assim que ela achar, ela copiará os dados da Planilha Diária para as linhas abaixo da referida data na Planilha Padrão.

    E ainda existe outro detalhe que eu havia esquecido de comentar: as dias abas estão em arquivos diferentes.

    Ficou mais claro agora?

    Será que você poderia me ajudar novamente?

    DEsde já muito obrigado

    quarta-feira, 5 de março de 2014 18:30
  • Mande as planilhas no meu email bkunace@gmail.com que vejo o que pode ser feito, poderia perder um bom tempo fazendo e na hora de adequar ao arquivo original perder um outro enorme tempo, então para poupar e garantir que vai ficar beleza, me envie no email os arquivos.
    quarta-feira, 5 de março de 2014 21:27