Página 1 de 1

Incluir Linhas de Parcelamento Excluindo a Linha Original

Enviado: 04 Mai 2020 às 21:25
por gregvides
Olá Pessoal...

Faz dias que quebro a cabeça com essa planilha... Preciso substituir automaticamente cada linha da planilha de controle de transações de cartões parcelados realizadas (que no caso representa o total) por suas parcelas.

Ou seja, quando na coluna "Total de Parcelas" o valor for maior do que 1 (a Getnet apresenta a venda a crédito sem ser parcelado como 1 parcela, a Cielo apresenta como 0 parcela), a linha daquela transação precisa ser excluída e no local devem ser incluídas as parcelas respectivas.

Não sei se consegui me fazer entender. Segue em anexo a planilha que uso como base e que preciso incluir a macro para substituir todas as transações que sejam parceladas por suas respectivas parcelas e datas de pagamento.

Agradeço antecipadamente por qualquer ajuda.

Gregory

Re: Incluir Linhas de Parcelamento Excluindo a Linha Origina

Enviado: 04 Mai 2020 às 22:54
por osvaldomp
gregvides escreveu:
Preciso substituir automaticamente cada linha ...
Você quer substituir todos os dados da venda e ficar sem o histórico, é isso?

... a linha daquela transação precisa ser excluída e no local devem ser incluídas as parcelas respectivas.
Em quais colunas você quer as parcelas ?
Como calcular o valor das parcelas ?


Não sei se consegui me fazer entender.
Seria útil se você colocasse os resultados desejados na planilha com as necessárias explicações.

Incluir Linhas de Parcelamento Excluindo a Linha Original

Enviado: 04 Mai 2020 às 23:21
por gregvides
Olá Osvaldo, Boa noite!

1) Sim, quando for uma transação parcelada, quero que a linha relativa a essa transação seja substituída por tantas transações quantas forem as parcelas.

2) Na planilha há uma coluna que informa quantas parcelas são, e, no caso de ser 2 ou 3, para se obter o valor de cada parcela seria apenas dividir o valor da transação total pelo total de parcelas.

3) Estou anexando duas planilhas, uma da forma que eu tenho os dados, e a outro com a forma que eu espero que fique após o tratamento pelo macro (vou marcar de vermelho o que deveria ser excluído e de amarelo o que deveria ser incluído).

Muito obrigado por sua atenção e ajuda!!!

Gregory

Re: Incluir Linhas de Parcelamento Excluindo a Linha Origina

Enviado: 05 Mai 2020 às 11:15
por osvaldomp
Olá, Gregory.
Veja se aproveita.
O resultado do código abaixo apresenta divergências do seu resultado nas colunas F:G do segundo registro.
Funciona com qualquer quantidade de registros e de parcelas.
Código: Selecionar todos
Sub InsereParcelas()
 Dim LR As Long, k As Long, x As Long
  LR = Cells(Rows.Count, 1).End(3).Row
  Application.ScreenUpdating = False
  For k = LR To 2 Step -1
   If Cells(k, 5) > 1 Then
    x = Cells(k, 5)
    Rows(k + 1).Resize(x - 1).EntireRow.Insert
    Cells(k, 5).Resize(x) = 1
    Cells(k, 6).Resize(x) = Cells(k, 6) / x
    Cells(k, 7).Resize(x) = Cells(k, 7) / x
   End If
  Next k
  LR = Cells(Rows.Count, 5).End(3).Row
  Range("A2:A" & LR).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=EDATE(R[-1]C,1)"
  Range("B2:B" & LR).Resize(, 3).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
  Range("A2:D" & LR).Value = Range("A2:D" & LR).Value
  Application.ScreenUpdating = True
End Sub

Incluir Linhas de Parcelamento Excluindo a Linha Original

Enviado: 05 Mai 2020 às 15:20
por gregvides
Olá Osvaldo!!!

Muito obrigado! É exatamente isso que eu precisava!

Só mais uma dúvida... Quando não há nenhuma transação parcelada (ou seja, quando há apenas transações com 1 ou 0) a macro retorna o erro "Erro em tempo de execução 1004; Nenhuma célula foi encontrada". Tem como alterar o código para, em não havendo nenhuma transação a ser dividida, a macro simplesmente não fazer nada mesmo e não retornar o erro?

Muitíssimo obrigado por sua atenção!

Gregory

Re: Incluir Linhas de Parcelamento Excluindo a Linha Origina

Enviado: 05 Mai 2020 às 17:17
por osvaldomp
Olá, Gregory.

Acrescente a linha em vermelho conforme abaixo.

Dim LR As Long, k As Long, x As Long
If Application.CountIf([E:E], ">" & 1) = 0 Then Exit Sub
LR = Cells(Rows.Count, 1).End(3).Row

Incluir Linhas de Parcelamento Excluindo a Linha Original

Enviado: 05 Mai 2020 às 19:48
por gregvides
Muitíssimo obrigado Osvaldo! Resolveu com perfeição!