RETENÇÃO DE IMPOSTO...
 
Notifications
Clear all

RETENÇÃO DE IMPOSTOS VIA VBA

33 Posts
5 Usuários
0 Reactions
4,793 Visualizações
(@eraldofer)
Posts: 0
New Member
Topic starter
 

Bom dia amigos,

Estou com uma duvida que seria a seguinte:
Tenho 60 convênios onde cada um deles faz retenção de 5 impostos (ISS - IR - PIS - COFINS - CSLL) as porcentagens de retenção de cada imposto varia conforme convênio não sendo fixas. Antigamente usava uma tabela que fazia a retenção por meio de procv, o unico problema que encontrei e que se eventualmente eu alterar qualquer uma das retenções de um convênio (sim isso pode ocorrer no decorrer do ano) ele altera todos os dados sejam os antigos e novos e naverdade preciso que altere apenas as retenções daquela data em diante.
O que gostaria:

Preciso criar um codigo via vba onde conforme eu coloque o nome do convênio em um formulario (combobox de convênios) ele busque o % de retenção de cada imposto e faça o lançamento na planilha e se possivel que a listagem de convênios e de % estivesse toda no vba e não em uma planilha especifica.

Não tenho nenhum modelo de planilha com formulario ou algo do tipo mas as retenções podem ser:

IR - 1,5% OU 1,2% OU 4,8% OU 0%
ISS - 2% OU 0%
PIS - 0,65% OU 0%
COFINS 3% OU 0%
CSLL 1% OU 0%

Esses Impostos juntos podem combinar em retenções gerais com os seguintes percentuais(mais comuns):
0%/1,5%/3,5%/4,65%/6,15%/7,85%/8,15%/9,45%/11,45%

EX: CONVÊNIO CASSI NOTA VALOR DE R$ 1000,00 - FAZ RETENÇÃO DE 8,15% SENDO 2% ISS/ 1,5% IR/0,65% PIS/ 3% COFINS/ 1% CSLL. NA PLANILHA TEM QUE APARECER: CASSI 1000,00 /ISS R$ 20,00/IR R$ 15,00/ PIS R$ 6,50/ COFINS R$ 30,00/ CSLL R$ 10,00 LIQUIDO: R$ 918,50
Seria possivel ter esse fluxo de variaveis dentro do VBA e na hora do lançamento via formulario ele fazer a porcentagem sobre o valor convertendo em moeda e lançando na planilha do banco de dados?

Não tenho planilha modelo!

Desde já agradeço pela atenção.

 
Postado : 26/08/2016 8:29 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

EraldoFer,

Boa tarde!

Uma dúvida: Em que situações o IR é 1,5%? Em que situações o IR é 1,2%? Em que situações o IR é 4,8%? Em que situações o IR é 0,0%?

Idem idem para os outros impostos...

 
Postado : 26/08/2016 10:41 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

No exemplo anexo, o cálculo é feito apenas com base nos primeiros valores dos impostos informados pois, como falei, há a necessidade de se saber em que situações os índices dos impostos variam, como por exemplo no IR: Se valor fou de 100,00 até 1.000,00 calcular 1,5%, se for de 1.001,00 a 5.000,00 calcular 2,0%. E por aí vai. Precisa-se saber quais são as faixas para calcular os percentuais corretamente.

 
Postado : 26/08/2016 11:10 am
(@eraldofer)
Posts: 0
New Member
Topic starter
 

AMIGO,

Acredite se eu fosse te explicar todas as situações possíveis, eu teria que apresentar toda a contabilidade de Clinicas e Hospitais e muita coisa bagunçada, esse é o nosso Brasil.
No entanto a condicional que uso é o nome do Convênio e o nome da empresa que emiti a nota então por exemplo sempre que eu colocar E-VIDA (NOME DO CONVÊNIO) eu tenho que dizer qual é a serie da Nota Fiscal (7 ou 9) Série 7 é HOG (Uma dos Hospitais que presto serviço) se colocar 9 é INOB (Outro hospital do mesmo grupo) ficamos assim então:

(HOG (7) para E-VIDA - retenção de 2% total (referente ao ISS)) Valor de R$ 100,00 - ISS R$ 2,00
(INOB (9) para E-VIDA - retenção de 8,15% total (Referente a todos os impostos sendo ir 1,5 iss 2 pis 0,65 COFINS 3 E CSLL 1)) Valor de R$ 100,00 - VALOR LIQUIDO R$ 91,85.

Segue em anexo a planilha de retenções, como falei são 2 empresas e 60 convênios, mesmo que o código fique incorporado ao vba, posso altera-lo internamente se assim for o caso não gostaria de ter uma planilha com esses dados.

Desde já agradeço pela ajuda.

 
Postado : 26/08/2016 11:14 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Entendi...

Bom... para fazer isso somente via VBA fica muito complexo pois essa tabela teria que está toda dentro do VBA. Fora isso, envolveria uma complexidade de condicionantes e laços para identificar cada um dos casos. Isso é muito complexo e trabalhoso. Infelizmente, eu não tenho tempo para isso.

Vamos ver se alguém se dispõe a ajudar...

 
Postado : 26/08/2016 11:48 am
(@eraldofer)
Posts: 0
New Member
Topic starter
 

AMIGO,
Boa Tarde,

Ainda que seja novo no VBA, não sou tão leigo no assunto, se não for te incomodar e tomar seu tempo ( e realmente não quero toma-lo) você poderia me enviar um exemplo pronto para um único convênio para INOB e HOG? eu me viro com o resto kkkk.
Desde já agradeço-lhe por esforço e exemplo dado.

 
Postado : 26/08/2016 11:55 am
(@eraldofer)
Posts: 0
New Member
Topic starter
 

Alguém mais poderia me ajudar?

 
Postado : 27/08/2016 11:04 am
(@mprudencio)
Posts: 0
New Member
 

Deixa ver se entendi vc quer essa tabela apresentada toda no VBA?

Como disse o colega alem de trabalhoso é muito complexo.

Qual o motivo de usar somente VBA e nao ter a tabela em um planilha como esta?

Juro que fiquei curioso!

Faltou dizer onde os resultados da pesquisa devem aparecer.

Enfim qual o resultado esperado?

 
Postado : 27/08/2016 12:27 pm
(@eraldofer)
Posts: 0
New Member
Topic starter
 

Boa Tarde,
Marcelo
Então, quando disse que queria no VBA não achei que fosse de tal complexidade, sabia que não era facil, não tenho um motivo para isso estou apenas explorando tudo que o VBA consegue fazer,
no entanto fazendo minha abordagem quanto a necessidade sem excessos preciso que ao fazer o lançamento da nota fiscal escolhendo o convênio ele faça as devidas retenções mesmo que seja em uma tabela, mas não pode ser por procv pois ao fazer o procv, se eu alterar as retenções na planilha ele vai alterar todos os resultados de todas as notas daquele convênio e o que desejo e que as alterações so possam ser aceitas a partir da data da alteração em diante mantendo os mesmos lançamentos anteriores a atualização das retenções.
Na verdade não será uma pesquisa, será um lançamento em um banco de dados.
O fomulário que pretendo criar terá série - Nº NFE - nome do convênio - valor bruto e data - a parti do convênio e da série ele calculara as retenções em cima do valor bruto.
o banco de dados terá como colunas nessa ordem:
SERIE - REGISTRO NO FORMULÁRIO
Nº NFE - REGISTRO NO FORMULARIO
CONVÊNIO - REGISTRO NO FORMULARIO
V.BRUTO - REGISTRO NO FORMULARIO
ISS - CAMPO CALCULADO
IR - CAMPO CALCULADO
PIS - CAMPO CALCULADO
COFINS - CAMPO CALCULADO
CSLL - CAMPO CALCULADO
V.LIQUIDO - CAMPO CALCULADO
DATA DE EMISSÃO - REGISTRO NO FORMULÁRIO

O Resultado que espero e fazer a apuração fiscal das empresas para isso tenho que saber as retenções de cada nota para fazer a devida apuração, se o lançamento de notas fiscais tiver retenções erradas pode dar multa para empresa, o problema é que são diversas pessoas emitindo e apenas uma pessoa que tenha o conhecimento correto das retenções.

Assim seria possível?

 
Postado : 27/08/2016 1:06 pm
(@mprudencio)
Posts: 0
New Member
 

Monte no mesmo arquivo a tabela de retenções em uma unica tabela em uma guia e uma tabela de lançamentos em uma outra guia.

 
Postado : 27/08/2016 2:46 pm
(@brunoxro)
Posts: 0
New Member
 

Boa tarde EraldoFer,

não tenho um motivo para isso estou apenas explorando tudo que o VBA consegue fazer

No caso então o trabalho não vale a pena, imagina ter que digitar no código toda vez que você recebe uma tabela nova? O VBA tem que ser usado junto com as funções prontas do Excel, não sozinho.

Uma forma que você pode fazer é nomear cada tabela (aba,planilha) de convênios por data. Depois você pode usar um PROCV, referenciando cada planilha especifica e você tem os resultados desejados sem incoerências.

 
Postado : 27/08/2016 2:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi corretamente, mas é possível ter a lista dos convênios e/ou a tabela dos percentuais no "corpo" da rotina/código;
porem sera um trabalho de digitação enorme; lembrando que o editor VBE não é um processador de texto, não tem corretor o layout será manual etc...
O tamanho da rotina ficara muito grande e difícil de ler; bem como o editor VBE tem um limite linhas por módulos, que poderá ser atingido rapidamente.
Uma boa e recomendada pratica de trabalho com programação e ter esse tipo de dado em tabelas auxiliares, que facilitam em muito a programação/manutenção.
Imagine o custo se a cada alteração de nome/taxas/percentuais; inclusão/exclusão etc.. ter que acionar o programador para essa alteração (hoje e você que devera fazer tudo,mas...)
Quanto ao Procv, cujo problema são alteração das mesmas, que gera o "erro" na utilização do Procv, a proposta do colega Bruno, creio eu, "corrige" essa falha.
Voltando a demanda inicial; para utilizar da mesma maneira que hoje, porem "transferindo" o Procv para uma rotina VBA, pode-se utilizar algo similar ao tratado no tópico
http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=21612.
Se julgar procedente, comece criando seu formulário , inclua os campos necessários (aqueles que hoje usa na planilha para o procv), poste o modelo, inclua nele uma planilha com alguns dados demonstrando como utiliza o procv, assim ficara mais simples rápido e direto obter uma resposta satisfatória.

Obs.: Substitua nomes/valores ou demais dados que julgar necessário, por dados/valores fictícios, precisamos apenas de sua estrutura de dados,

 
Postado : 27/08/2016 9:30 pm
(@eraldofer)
Posts: 0
New Member
Topic starter
 

Boa Noite!!!
Reinaldo,

Estarei montando a planilha modelo e enviando para a análise dos colegas, entretanto me veio uma luz agora à noite e talvez fique mais simples, aliás bem mais simples.
Bom como posso fazer PROCV via VBA tendo a matriz da tabela no próprio Excel ao gravar o formulário no banco de dados em vez de gravar a fórmula ele grava como texto assim não influenciado caso eu mude minha matriz do PROCV para os lançamentos futuros.

Assim seria possível?
E ficaria mais fácil?

Att.

 
Postado : 27/08/2016 9:45 pm
(@eraldofer)
Posts: 0
New Member
Topic starter
 

Alguém?

 
Postado : 28/08/2016 7:53 pm
(@brunoxro)
Posts: 0
New Member
 

Alguém?

Da forma que você falou é possível, você não teria problemas no futuro tentando descobrir qual tabela preencheu cada resultado?

 
Postado : 28/08/2016 8:53 pm
Página 1 / 3