Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#41163
Boa noite Pessoal,

Por favor, preciso de uma ajuda para criar uma macro para copiar os valores que estão na coluna A da aba "CURVA ABC ALMOX" para a coluna A da aba LISTA FÍSICA e preencher na coluna "D" da Aba LISTA FÍSICA o dia dessa copia. Porém preciso que ao copiar a primeira informação ele faça um LOOP analisando a coluna "E" e copie somente o que for < 1 para a aba LISTA FÍSICA, na hora de colar ele precisa fazer um LOOP também para saber em qual linha esta vazia para colar.

Pra que tudo isso funcione, a MACRO tem que copiar e colar uma quantidade certa de linhas, essa quantidade está nos campos U3 , V3 e W3, ou seja, nesses campos esta determinado quantos TIPO A, B ou C tem que ser copiados. Esse tipo A,B ou C esta localizado na coluna F.

Segue a planilha em anexo para melhor esclarecer.

Qualquer dúvida posso tentar explicar melhor

agradeço desde já a ajuda.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#41286
Boa noite Pessoal,

alguma ajuda? Preciso muita dessa macro e não sei fazer, sou iniciante em Macros.

Agradeço antecipadamente.
Por osvaldomp
#41296
FelipeBarbosa escreveu:... analisando a coluna "E" e copie somente o que for < 1
Na coluna E os valores são em percentuais. Você quer copiar os valores < 100%, é isso?

... na hora de colar ele precisa fazer um LOOP também para saber em qual linha esta vazia para colar.
Fazer Loop para encontrar a primeira célula vazia é recurso primitivo ;)

... a MACRO tem que copiar e colar uma quantidade certa de linhas, essa quantidade está nos campos U3 , V3 e W3...
Aplicando Auto Filtro com critério <100% na coluna E e =A na coluna F, resulta em 250 registros, porém em U3 está o valor 13. Qual o critério para escolher os 13 registros que serão replicados entre os 250 filtrados ?
#41310
osvaldomp escreveu:
FelipeBarbosa escreveu:... analisando a coluna "E" e copie somente o que for < 1
Na coluna E os valores são em percentuais. Você quer copiar os valores < 100%, é isso?
Perdão, a coluna correta é a G, deve copiar o codigo da primeira coluna, porem copiar somente se a coluna G estiver vazia, me enganei na hora de escrever.

... na hora de colar ele precisa fazer um LOOP também para saber em qual linha esta vazia para colar.
Fazer Loop para encontrar a primeira célula vazia é recurso primitivo ;)
Realmente, você tem razão osvaldomp, sou iniciante no vba e estou aprendendo os recursos ainda, me desculpe pela minha ignorancia.

... a MACRO tem que copiar e colar uma quantidade certa de linhas, essa quantidade está nos campos U3 , V3 e W3...
Aplicando Auto Filtro com critério <100% na coluna E e =A na coluna F, resulta em 250 registros, porém em U3 está o valor 13. Qual o critério para escolher os 13 registros que serão replicados entre os 250 filtrados ?
Como havia escrito errado, vou corrigir esse topico também, ele deve selecionar os 13 primeiros registros de do U3, os 5 primeiros registros de V3 e os 9 primeiros registros de W3 que estão com a celula G vazia e colar la na outra planilha..Essa macro será acionada todos os dias, a pessoa vai utilizar isso para gerar uma lista de contagem diaria de itens do ALMOX por ordem de valor, por isso o A,B e C.

Osvaldo, muito obrigado pela ajuda.
Por osvaldomp
#41328
Felipe, veja se o código abaixo atende.
Código: Selecionar todos
Sub ReplicaDados()
 Dim LRo As Long, LRd As Long, rVis As Range, k As Long, i As Long
  Application.ScreenUpdating = False
   
  With ActiveSheet
   .[A3].AutoFilter
   LRo = .Cells(Rows.Count, 1).End(3).Row
    For i = 21 To 23
    .[A3:k3].AutoFilter 7, "="
    .[A3:k3].AutoFilter 6, .Cells(1, i)
     k = 0
    For Each rVis In .Range("A4:A" & LRo).SpecialCells(xlCellTypeVisible)
     k = k + 1: If k = .Cells(3, i) Then Exit For
    Next rVis
    LRd = IIf(Sheets("LISTA FÍSICA").[A2] = "", 2, Sheets("LISTA FÍSICA").[A1].End(4).Row)
    .Range("A4: A" & rVis.Row).Copy Sheets("LISTA FÍSICA").Cells(LRd + 1, 1).End(3)(2)
    Sheets("LISTA FÍSICA").Cells(LRd + 1, 4).End(3)(2).Resize(.Cells(3, i)).Value = Date
    Next i
    .[A3].AutoFilter
  End With
  Application.ScreenUpdating = True
End Sub
obs. considerei que sempre haverá células vazias na coluna G, com A, B e C na coluna F
#41338
osvaldomp escreveu:Felipe, veja se o código abaixo atende.
Código: Selecionar todos
Sub ReplicaDados()
 Dim LRo As Long, LRd As Long, rVis As Range, k As Long, i As Long
  Application.ScreenUpdating = False
   
  With ActiveSheet
   .[A3].AutoFilter
   LRo = .Cells(Rows.Count, 1).End(3).Row
    For i = 21 To 23
    .[A3:k3].AutoFilter 7, "="
    .[A3:k3].AutoFilter 6, .Cells(1, i)
     k = 0
    For Each rVis In .Range("A4:A" & LRo).SpecialCells(xlCellTypeVisible)
     k = k + 1: If k = .Cells(3, i) Then Exit For
    Next rVis
    LRd = IIf(Sheets("LISTA FÍSICA").[A2] = "", 2, Sheets("LISTA FÍSICA").[A1].End(4).Row)
    .Range("A4: A" & rVis.Row).Copy Sheets("LISTA FÍSICA").Cells(LRd + 1, 1).End(3)(2)
    Sheets("LISTA FÍSICA").Cells(LRd + 1, 4).End(3)(2).Resize(.Cells(3, i)).Value = Date
    Next i
    .[A3].AutoFilter
  End With
  Application.ScreenUpdating = True
End Sub
obs. considerei que sempre haverá células vazias na coluna G, com A, B e C na coluna F

Osvaldomp, muito obrigado é isso mesmo que eu queria, preciso apenas de um ajuste.

Eu precisei inserir uma coluna a mais de descrição do campo e por isso perdeu a referencia da Macro, tentei alterar algumas coisas na macro mais nem tudo deu certo.

Poderia me ajudar atualizando o código de acordo com a planilha nova, irá mudar pouca coisa, apenas não achei na linha de programação onde mudar as colunas.

obrigado pela ajuda.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#41347
No arquivo anterior, na planilha CURVA ABC ALMOX, o código considerou as colunas A, F e G, e na planilha LISTA FÍSICA o código considerou as colunas A e D.
Informe com exatidão quais as colunas a serem consideradas no novo arquivo.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#41352
Desculpe, precisei atualizar hoje. Favor considerar na CURVA ABC ALMOX A, G e H e na planilha Lista Fisica A e E.
Por osvaldomp
#41355
Código: Selecionar todos
Sub ReplicaDados()
 Dim LRo As Long, LRd As Long, rVis As Range, k As Long, i As Long
  Application.ScreenUpdating = False
   
  With ActiveSheet
   .[A3].AutoFilter
   LRo = .Cells(Rows.Count, 1).End(3).Row
    For i = 23 To 25
    .[A3:k3].AutoFilter 8, "="
    .[A3:k3].AutoFilter 7, .Cells(1, i)
     k = 0
    For Each rVis In .Range("A4:A" & LRo).SpecialCells(xlCellTypeVisible)
     k = k + 1: If k = .Cells(3, i) Then Exit For
    Next rVis
    LRd = IIf(Sheets("LISTA FÍSICA").[A2] = "", 2, Sheets("LISTA FÍSICA").[A1].End(4).Row)
    .Range("A4: A" & rVis.Row).Copy Sheets("LISTA FÍSICA").Cells(LRd + 1, 1)
    Sheets("LISTA FÍSICA").Cells(LRd + 1, 5).Resize(.Cells(3, i)).Value = Date
    Next i
    .[A3].AutoFilter
  End With
  Application.ScreenUpdating = True
End Sub
dica - você colocou o código no módulo de EstaPasta_de_trabalho e, embora o código funcione, é recomendável que esse tipo de código (Sub) seja instalado em um módulo comum (menu Inserir / Módulo); o módulo de EstaPasta_de_trabalho é comumente reservado para alojar eventos de arquivo.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#41376
obrigado Osvaldo, deu certo.

Show!! abraços
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord