Ir ao conteúdo
  • Cadastre-se

Macro para gravar parcelas de cartao


Posts recomendados

Olá Mestres,

Não sou muito bom com VBA, mas tenho certeza que para vocês é moleza

Preciso criar uma macro que grave parcelas de cartao de credito

Na planilha "Painel de controle" eu tenho os seguintes campos

imagem1cw.png

Quando eu apertar o botão Gravar, eu quero que a Macro grave as 5 parcelas na planilha "Cartão de Crédito", considerando a data da compra em relação a data de fechamento da fatura, da seguinte forma.

imagem2ze.png

Como eu poderia fazer isso?

post-825563-13884960569926_thumb.png

post-825563-13884960570281_thumb.png

Link para o comentário
Compartilhar em outros sites

Aê, Daniel.

O código reproduz a figura que você postou, porém sem considerar a data de fechamento da fatura que não foi fornecida. Veja se estamos no caminho certo, forneça as datas mensais de fechamento para 'encaixarmos' no código.

Sub CartãoDeCrédito()
Dim i, LR As Long
i = 1
Do Until i > [D11]
With Sheets("Cartão de crédito")
LR = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(LR + 1, 1) = [C11] & " " & i & "/" & [D11]
.Cells(LR + 1, 2) = [E11] / [D11]
.Cells(LR + 1, 3) = [E11]
.Cells(LR + 1, 4) = WorksheetFunction.Proper(Format _
(DateAdd("m", i, [B11]), "mmmm"))
.Cells(LR + 1, 5) = Format(DateAdd("m", i, [B11]), "yyyy")
i = i + 1
End With
Loop
End Sub

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Osvaldo meu caro! Que bom revê-lo!

Foi malz a demora na resposta, mas os dias tem sido cheios.

Cara, funcionou lindamente. Gravou certim, sem aquele pisca-pisca todo que as minhas macros costumam ficar.

Eu tenho que aprender VBA cara, muito maneiro.

Vamos então a data de fechamento da fatura.

A fatura costuma fechar no último dia do mês, porém, parece que cada mês ela fecha em um dia diferente. Um mês fecha lá pelo dia 25, no outro fecha no dia 30. Não tem um dia certo.

De qualquer forma, acho que podemos colocar como sendo todo dia 30 que vai funcionar direitim. Caso dê alguma diferença, eu mudo manualmente.

Como podemos fazer?

Link para o comentário
Compartilhar em outros sites

Iaê, Daniel.

Quanto à data de fechamento imagino que ela seja obtida subtraindo-se uma certa quantidade de dias úteis ou dias corridos da data de vencimento, que é constante. Se conseguir esse critério com a operadora talvez seja possível dotar o nosso código de instrução para obter essa data automaticamente, sem precisar colocá-la na planilha.

Por enquanto:

1. considerei a data de fechamento da fatura em A11

2. considerei que os dados estarão na Plan2 (altere no código se necessário) e deixei as referências de planilha completas no código, isso permite disparar a macro com botão a partir de qualquer planilha do arquivo

Sub cartão()
Dim i, LR As Long
i = 1
Do Until i > Plan2.[D11]
With Sheets("Cartão de crédito")
LR = .Cells(Rows.Count, 1).End(xlUp).Row
If Plan2.[B11] <= Plan2.[A11] Then
.Cells(LR + 1, 1) = Plan2.[C11] & " " & i & "/" & Plan2.[D11]
.Cells(LR + 1, 2) = Plan2.[E11] / Plan2.[D11]
.Cells(LR + 1, 3) = Plan2.[E11]
.Cells(LR + 1, 4) = WorksheetFunction.Proper(Format _
(DateAdd("m", i, Plan2.[B11]), "mmmm"))
.Cells(LR + 1, 5) = Format(DateAdd("m", i, Plan2.[B11]), "yyyy")
Else
.Cells(LR + 1, 1) = Plan2.[C11] & " " & i & "/" & Plan2.[D11]
.Cells(LR + 1, 2) = Plan2.[E11] / Plan2.[D11]
.Cells(LR + 1, 3) = Plan2.[E11]
.Cells(LR + 1, 4) = WorksheetFunction.Proper(Format _
(DateAdd("m", i + 1, Plan2.[B11]), "mmmm"))
.Cells(LR + 1, 5) = Format(DateAdd("m", i + 1, Plan2.[B11]), "yyyy")
End If
i = i + 1
End With
Loop
End Sub

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

Desculpem desenterrar o Tópico, mas nao encontrei mais nada sobre esse assunto

 

Essa macro resolveu meu problema, porém ela esta com uma diferença no lançamento das parcelas, com relação a data de fechamento do cartão. 

 

Ela esta adicionando 2 meses no vencimendo da parcela, mesmo quando a data da compra é menor que a data de fechamento da fatura.

 

Nao manjo muito de VB e ja fucei em todas as linhas mas nao consegui corrigir isso !! 

Link para o comentário
Compartilhar em outros sites

Ola Oswaldo

 

Seguem as Prints da Planilha com os comentários e exemplos.

 

http://imageshack.com/a/img538/8084/Xptn1N.jpg

http://imageshack.com/a/img661/7541/NX5uHc.jpg

 

A macro utilizada é essa :

 

Sub CartãodeCrédito()
Dim i, LR As Long
i = 1
    Do Until i > Plan2.[D11]
With Sheets("Cartão de crédito")
    LR = .Cells(Rows.Count, 1).End(xlUp).Row
    If Plan2.[b11] <= Plan2.[A11] Then
        .Cells(LR + 1, 1) = Plan2.[C11] & " " & i & "/" & Plan2.[D11]
        .Cells(LR + 1, 2) = Plan2.[E11] / Plan2.[D11]
        .Cells(LR + 1, 3) = Plan2.[E11]
        .Cells(LR + 1, 4) = WorksheetFunction.Proper(Format _
                            (DateAdd("m", i, Plan2.[b11]), "mmmm"))
        .Cells(LR + 1, 5) = Format(DateAdd("m", i, Plan2.[b11]), "yyyy")
    Else
        .Cells(LR + 1, 1) = Plan2.[C11] & " " & i & "/" & Plan2.[D11]
        .Cells(LR + 1, 2) = Plan2.[E11] / Plan2.[D11]
        .Cells(LR + 1, 3) = Plan2.[E11]
        .Cells(LR + 1, 4) = WorksheetFunction.Proper(Format _
                            (DateAdd("m", i + 1, Plan2.[b11]), "mmmm"))
        .Cells(LR + 1, 5) = Format(DateAdd("m", i + 1, Plan2.[b11]), "yyyy")
    End If
        i = i + 1
    End With
    Loop
End Sub
Link para o comentário
Compartilhar em outros sites

Olá, Rafael.

Prints da planilha são só orientativos. Antes de propor alguma sugestão para as questões aqui postadas as pessoas fazem testes, por isso é conveniente postar o arquivo com o código instalado, se não, quem estiver disposto a te ajudar precisaria reproduzir a sua planilha manualmente, o que demandaria tempo e trabalho.

Link para o comentário
Compartilhar em outros sites

Coloque a fórmula abaixo em A11 da Plan2 para retornar a data do próximo fechamento da fatura e faça os testes.
 

=SE(DIA(HOJE())<=8;DATA(ANO(HOJE());MÊS(HOJE());8);DATA(ANO(HOJE());MÊS(HOJE())+1;8))
Link para o comentário
Compartilhar em outros sites

Perfeito Oswaldo

 

porém, se a minha data de fechamento do cartão é por exemplo 05/10/2014 e a minha compra foi realizada no dia 01/10/2014, a primeira prestação ja comecaria no mês 10, mas ao executar a macro, ela devolve a informação da primeira parcela para o mes 12, Dezembro. Nao consegui solucionar isso.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...