Logo Hardware.com.br
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas

VBA como copiar dados de um intervalo de linhas após cair numa condição especifica?

#1 Por Luis Sangy 05/07/2016 - 15:33
Boa tarde a todos, estou com uma dúvida e conto a ajuda de vcs.

Na planilha em anexo, tenho 2 abas que serão usadas na macro : "Ordens Inf ouro" e "Schedule" tenho um numero finito de ordens nas dua planilhas (ex: LA083729.) Na aba Ordens INF ouro se encontram na coluna A e na aba Schedule na coluna Z.

O que eu preciso que a Macro faça é o seguinte:
Pegar a primeira ordem da aba Ordens INF Ouro e procurar-la na aba Schedule. Caso existe uma ordem igual a ela a macro deve copiar todos os dados da linha correspondente apartir da coluna A e colar na aba Ordens apartir da coluna F.

Caso não haja ordem equivalente na aba Schedule, a macro pula a linha para a próxima ordem até verificar todas as ordens da aba Ordens INF Ouro se há ordem equivalente na aba Schedule e copiar os dados nas que houverem.


Grato desde já!
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#4 Por Marcelo G Pr...
12/07/2016 - 09:21
200 Planilhas (guias)? Ou Pasta de Trabalho (Arquivos)?

Isso faz uma diferença grande inclusive pra escrever o codigo.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas
#5 Por Luis Sangy
12/07/2016 - 10:33
Pastas de Trabalho. Tenho que fazer essa busca de dados que mandei no post #1 desde o ano de 2014. A aba "Schedule" São dados que eu colo de outras planilhas( Pastas de Trabalho) Eu copio os valores nessa aba e rodo a macro. Fiz as contas aqui. São 1476 pastas de trabalho que colo os valores na aba Schedule. Eu fiz uma macro que puxa os dados que preciso. Porém como sou leigo em VBA ainda a execução ficou MUITO demorada. Segue em anexo caso alguém consiga dar uma ótimizada. Mas o processo é este, eu colo os valores na aba Schedule e rodo a macro para ver se acho os valores que preciso.

Obs: Este arquivo é um que fiz apenas para os dados do ano de 2014. Para a planilha ficar mais leve. Porém a ideia é a mesma do primeiro arquivo que mandei no post #1
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas
#6 Por Luis Sangy
21/07/2016 - 08:45
Bom dia

Gostaria de saber qual código se utiliza em VBA para copiar linha por linha de uma planilha até chegar na ultima linha preenchida?
Tenho um aqui que copia coluna por coluna, para servir de exemplo. Quero um que copie linha por linha!
Sheets("2016").Cells(ordeminf, 6) = Sheets("Schedule").Cells(OrdemSc, 1)
Sheets("2016").Cells(ordeminf, 7) = Sheets("Schedule").Cells(OrdemSc, 2)
e assim vai ate a ultima coluna preenchida...
Didakg
Didakg Novo Membro Registrado
1 Mensagem 1 Curtida
#9 Por Didakg
21/07/2016 - 13:43
Verifique antes se a Plan2 e Plan3 são as respectivas Planilhas
Insira essa Macro em um botão e execute.

Vai ser um pouco demorado pois vai ler linha por linha, isso não tem jeito!

Sub Macro1()
'
' Macro1 Macro
Dim LinhaSchedule, LinhaOrdem, i, j
Application.ScreenUpdating = False
' Conta todas as Células preenchidas da Coluna A da planilha Ordem
' Soma-se mais 4, devido as 4 primeiras células da coluna A estarem vazias, se preencher elas com 0 ou com espaço, deve-se retirar a soma.
LinhaOrdem = Application.WorksheetFunction.CountA(Plan2.Columns(1)) + 4
' Conta todas as Células preenchidas da Coluna Z da planilha Schedule
LinhaSchedule = Application.WorksheetFunction.CountA(Plan3.Columns(26)) + 1
'MsgBox LinhaOrdem
'MsgBox LinhaSchedule
For i = 6 To LinhaOrdem
For j = 2 To LinhaSchedule
Ordem = Plan2.Cells(i, 1)
Schedule = Plan3.Cells(j, 26)
If Schedule = Ordem Then
Plan3.Select
Plan3.Range(Cells(j, 1), Cells(j, 64)).Select
Selection.Copy
Plan2.Activate
Plan2.Range(Cells(i, 6), Cells(i, 70)).Select
ActiveSheet.Paste
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
A6_INFO
A6_INFO Cyber Highlander Administrador
56K Mensagens 4K Curtidas
#10 Por A6_INFO
21/07/2016 - 20:41
Tópicos unidos. Por gentileza, concentre o assunto em um único tópico.
Progressista gourmet, esquerda caviar, querem o controle e atacar as liberdades, ignoram opinião alheia e se fazem de vítimas quando confrontados. ©®²³
Com uma besta quadrada comunista (Paulo Freire), patrono da educação, criamos apenas militantes socialistas, bestas quadradas e analfabetos funcionais.
Quem votou no Ladrão, candidato da criminalidade e do establishment (que vibraram com sua vitória), é ladrão, cúmplice ou apenas um imbecil.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#14 Por Marcelo G Pr...
25/07/2016 - 19:39
E qual a diferença de copiar toda a planilha ou copiar linha por linha, o importante é que a condição seja atendida.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal