Macro para preencher uma coluna linha a linha com lógica.

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Macro para preencher uma coluna linha a linha com lógica.

Mensagempor donrafy » Dom Abr 14, 2019 9:46 pm

Boa noite pessoal,

estou com uma difuculdade para desenvolver uma macro que precisa fazer o seguinte.

Tenho às seguintes colunas:
Tipo CODIGO NEC LIVRE FALTA LIVRE VINCULADO
C1 2202010 100 300,00 100
C1 2205000 200 150,00 200
C3 2322007 5 20,00 5
C2 2202010 230 300,00 230
C2 3301620 8 800,00 8
C4 3301621 2 12,00 2
C4 3301623 4 1,00 4
C1 3301626 1 20,00 1

A Coluna TIPO, CODIGO, NEC são referências de uma base de dados.
A coluna Falta é dado por NEC - LIVRE VINCULADO

A coluna Livre é referência de outra base de dados:
CODIGO1 LIVRE1
2202010 300
2205000 150
2322007 20
3301617 500
3301620 800
3301621 12
3301623 1
3301626 20

O valor de LIVRE das primeira colunas reduzido sempre que LIVRE VINCULADO é preenchido.
Por exemplo: (COlocando Livre Vinculaado = 100, Falta vai pra Zero e Livre vai para 200)
Tipo CODIGO NEC LIVRE LIVRE VINCULADO FALTA
C1 2202010 100 200,00 100 0

Preciso fazer uma macro que coloque o valor de Livre vinculado , conforme '"FALTA" e disponibilidade no "LIVRE"

A solução que fiz é funcional, mas não ideal, eu crio uma nova coluna nova em que coloco
=se(@FALTA-@LIVRE;FALTA;LIVRE)
ai vou copiando linha por linha e colando em LIVRE VINCULADO.

Código: Selecionar todos
Sub Macro5()
'
'
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]<RC[-3],RC[-1],RC[-3])"
    Range("G2").Select
    Selection.Copy
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("G2:G10")
    Range("G2:G10").Select
    Range("G2").Select
    Selection.Copy
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G8").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Sub


o que eu queria era, melhorar esse processo, fazendo com que o códico colasse linha por linha até chegar na última linha preenchida.
Além disso que o código fizesse isso primeiro para tudo que for primeiro TIPO: C1, depois, C2... e sequência.

alguém pode me ajudar?
grato
donrafy
Membro
Membro
 
Mensagens: 2
Registrado em: Dom Abr 14, 2019 9:00 pm
Has thanked: 0 time
Have thanks: 0 time

{ SO_SELECT }

Re: Macro para preencher uma coluna linha a linha com lógica

Mensagempor LaerteB » Seg Abr 15, 2019 7:59 am

Bom dia, donrafy

Bem vindo ao Fórum ;)

Uma dica muito importante é você anexar uma planilha como exemplo com dados (fictícios) e que não seja o
projeto inteiro (com o trecho que está com dificuldades); explicando com as informações necessárias
para alcançar o seu objetivo (se necessário incluir imagens elucidativas), desta forma podemos ajudá-lo
com maior rapidez e eficácia (a maioria nem olharia este Tópico sem um arquivo exemplo, pois
existe muitas "variáveis" que podem impossibilitar o sucesso parcial ou total da solução proposta,
se não tiver um arquivo exemplo que for disponibilizado) ;) ..

Aguardando sua resposta (seu arquivo exemplo) e seu Feed Back ... se foi útil, não esqueça de Clicar na
"mãozinha" acima a direita :D ...

LaerteB :D
"Se foi útil para ti ;), por gentileza clicar na mãozinha ao lado do botão citar, obrigado ;) ."
Avatar do usuário
LaerteB
Membro
Membro
 
Mensagens: 68
Registrado em: Seg Fev 26, 2018 4:52 pm
Localização: SP
Has thanked: 25 times
Have thanks: 29 times

Re: Macro para preencher uma coluna linha a linha com lógica

Mensagempor wagner » Seg Abr 15, 2019 8:21 am

donrafy ,

Boa dia!

Seja muito bem vindo (a) ao fórum.

Para aproveitar ao máximo o fórum e sempre manter o mesmo de forma organizada, sugiro ler os tópico da regras abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Algumas solicitações especiais que pedimos, por gentileza, ficar atento:
1 - Não inserir no titulo de suas postagens expressões como Help, Ajuda, etc. O título deve ser um resumo da sua necessidade para que outras pessoas que tenham a mesma dúvida possam efetuar a pesquisa e achar como foi resolvido.
2 - Não insira em suas mensagens frases todas escritas em letras maiúsculas. Isso, na Internet, é compreendido como gritos e muitos usuários sequer respondem somente por esse fato!
3 - Insira sempre um arquivo exemplo compactado com .ZIP aqui mesmo no fórum. Existe, logo abaixo da caixa de mensagens, uma aba chamada "Adicionar um anexo" para essa finalidade. O arquivo exemplo deve ser pequeno, com apenas 5 linhas no máximo, compactado com .ZIP e ter o mesmo layout (nome do arquivo, nome das abas/guias/folhas, mesma linha/coluna onde os dados se iniciam) do arquivo original. Links de arquivos enviados para sites de compartilhamento de arquivos, muitas vezes são bloqueados pelas empresas, por conterem muitos vírus. Alguns usuários que acessam o fórum a partir de empresas não conseguem baixar tais arquivos.
4 - Não utilize a ferramenta CITAR para inserir o inteiro teor das mensagens que lhe são encaminhadas como resposta. Citações, se estritamente necessárias ao entendimento da mensagem que você quer enviar, devem ser apenas de pequenos trechos das mensagens.
5 - Se for postar códigos VBA aqui no fórum, utilize a ferramenta CODE localizada logo no início da caixa de mensagens (quinto botão da esquerda para a direita). As linhas de código devem ficar entre as palavras "CODE e /CODE".
6 - Agradeça sempre às pessoas que lhe responderam e às mensagens que atenderam a necessidade de sua demanda. Esse agradecimento deve ser clicando na mãozinha que fica localizada ao lado da ferramenta CITAR. Lembre-se: o fórum é gratuito e esse é o único incentivo para as pessoas que prestam ajuda. Você pode agradecer a quantos usuários quiser.
7 - O título ou o texto das mensagens postadas não devem ser escritos todo em letras maiúsculas. Na internet, tudo escrito em letras maiúsculas é interpretado como gritos e muitos usuários sequer olham para esse tipo de mensagem.
8 - Não Utilize o Botão CITAR para efetuar as suas respostas. Para fazer isso use apenas o Botão RESPONDER.
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 5349
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 94 times
Have thanks: 2278 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 6 visitantes