FUNCAO SIMILAR AO ATINGIR META DO EXCEL
Bom dia galera.
Estou criando uma funçao similar ao Atingir Meta do excel. Porem em uma das hipoteses nao estou sabendo fazer o calculo correto para chegar no resultado.
é assim, tenho uma tela que inclui valor de usinagem + soma de valor de itens + valor do frete + valor de um determinado produto
E tenho o % de imposto mais % de lucro
Meu cliente quer ao alterar o valor final e o sistema dar a margem de lucro dele.
O problema é que a soma dos valores depende de uma condiçao assumida no cabeçalho do pedido. Exemplo
Ele escolhe Usinagem + itens + frete
Ou usinagem + frete
ou Usinagem + itens + deterdo produto
Eu teria que ir fazendo laços [Ô]chutando[Ô] o valor da margem de lucro para dar aquele total ?
Gostaria de saber se alguem tem uma idéia melhor para me ajudar.
Estou criando uma funçao similar ao Atingir Meta do excel. Porem em uma das hipoteses nao estou sabendo fazer o calculo correto para chegar no resultado.
é assim, tenho uma tela que inclui valor de usinagem + soma de valor de itens + valor do frete + valor de um determinado produto
E tenho o % de imposto mais % de lucro
Meu cliente quer ao alterar o valor final e o sistema dar a margem de lucro dele.
O problema é que a soma dos valores depende de uma condiçao assumida no cabeçalho do pedido. Exemplo
Ele escolhe Usinagem + itens + frete
Ou usinagem + frete
ou Usinagem + itens + deterdo produto
Eu teria que ir fazendo laços [Ô]chutando[Ô] o valor da margem de lucro para dar aquele total ?
Gostaria de saber se alguem tem uma idéia melhor para me ajudar.
Amigo,
O sua parametrização é complexa, para que possamos te ajudar precisarÃamos de mais informações.
1º Qual o seguimento
2º vocês partem de um valor (um estoque, um grau de acabamento de produção) para adicionar os custos e despesas?
3º estas informações serão apresentadas na hora de emitir a Danfe ou é somente para analise de rentabilidade?
4º Se for analise de rentabilidade você precisa verificar a CNAE para desmembrar os impostos (IRPJ, PIS/COFINS, ICMS, IPI...etc)
5º Será necessário adicionar um campo para bonificações, pois, caso haja, refletira na rentabilidade.
6º Se tiver bonificação como ela será entregue? No mesmo produto ou em outros produtos?
7º Será feito o mesmo markup para todos os itens ou cada itens terá o sua própria margem?
8º Qual a rentabilidade liquida a empresa espera auferir após o ciclo de operacional?
9º A pessoa responsável pelo preenchimento e análise das informações é leiga ou tem conhecimento das atividades operacionais da empresa?
Respondendo estas questões fica fácil de parametrizar o seu programa para fazer os cálculos e análises automática.
O sua parametrização é complexa, para que possamos te ajudar precisarÃamos de mais informações.
1º Qual o seguimento
2º vocês partem de um valor (um estoque, um grau de acabamento de produção) para adicionar os custos e despesas?
3º estas informações serão apresentadas na hora de emitir a Danfe ou é somente para analise de rentabilidade?
4º Se for analise de rentabilidade você precisa verificar a CNAE para desmembrar os impostos (IRPJ, PIS/COFINS, ICMS, IPI...etc)
5º Será necessário adicionar um campo para bonificações, pois, caso haja, refletira na rentabilidade.
6º Se tiver bonificação como ela será entregue? No mesmo produto ou em outros produtos?
7º Será feito o mesmo markup para todos os itens ou cada itens terá o sua própria margem?
8º Qual a rentabilidade liquida a empresa espera auferir após o ciclo de operacional?
9º A pessoa responsável pelo preenchimento e análise das informações é leiga ou tem conhecimento das atividades operacionais da empresa?
Respondendo estas questões fica fácil de parametrizar o seu programa para fazer os cálculos e análises automática.
na realidade pelo que entendi
se ele vai lançar o valor final, então vc teria de fazer isso
ou
lógica na matemática acima não inclui o imposto
agora se vc quizer o valor em porcentagem seria esta a fformula.
se ele vai lançar o valor final, então vc teria de fazer isso
Valorfinal - (Usinagem + itens + frete) = lucro
ou
valor final - (usinagem + frete) = lucro
lógica na matemática acima não inclui o imposto
agora se vc quizer o valor em porcentagem seria esta a fformula.
(Valorfinal - (Usinagem + itens + frete)) * ((Usinagem + itens + frete) / 100)
Caros colegas.
Vou tentar explicar melhor.
è um orçamento para fabricação de asfalto.
Cada materia-prima tem o preço de custo, cadastrado em outra tabela.
Um grupo de materia-primas pertence ao grupo [ô]agregados[ô]
Outra(singular) pertence ao grupo [ô]CAP[ô]
E outra (CAL) pertence ao grupo Usinagem
E o frete é preenchido no ato do preenchimento do orçamento.
Existem alguns tipos de tipo de fornecimento
[Ô]USINAGEM[Ô]
[Ô]USINAGEM + FRETE[Ô]
[Ô]USINAGEM + AGREGADOS[Ô]
[Ô]USINAGEM + AGREGADOS + CAP[Ô]
[Ô]USINAGEM + AGREGADOS + FRETE[Ô]
[Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
[Ô]USINAGEM + FRETE + CAP[Ô]
Entao para gerar o preço final considero essas condiçoes acima. E faço o calculo em cima do imposto(fixo cadastrado como 12%)
A margem de lucro e o preço de custo de cada agregado, o mesmo para o cap, frete, e usinagem + cal
Entao se eu quiser mudar a margem de lucro, apenas pego novamente os valores de custo, refaço os calculos com a nova margem e pronto.
Mas se eu quiser por exemplo
Orçamento nº 1
Tipo de fornecimento [Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
Valor final = 180,00
Quero chegar este valor em 190,00 e preciso que o sistema me de a margem de lucro.
é meio confuso de entender, mas é neste esquema acima.
Vou tentar explicar melhor.
è um orçamento para fabricação de asfalto.
Cada materia-prima tem o preço de custo, cadastrado em outra tabela.
Um grupo de materia-primas pertence ao grupo [ô]agregados[ô]
Outra(singular) pertence ao grupo [ô]CAP[ô]
E outra (CAL) pertence ao grupo Usinagem
E o frete é preenchido no ato do preenchimento do orçamento.
Existem alguns tipos de tipo de fornecimento
[Ô]USINAGEM[Ô]
[Ô]USINAGEM + FRETE[Ô]
[Ô]USINAGEM + AGREGADOS[Ô]
[Ô]USINAGEM + AGREGADOS + CAP[Ô]
[Ô]USINAGEM + AGREGADOS + FRETE[Ô]
[Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
[Ô]USINAGEM + FRETE + CAP[Ô]
Entao para gerar o preço final considero essas condiçoes acima. E faço o calculo em cima do imposto(fixo cadastrado como 12%)
A margem de lucro e o preço de custo de cada agregado, o mesmo para o cap, frete, e usinagem + cal
Entao se eu quiser mudar a margem de lucro, apenas pego novamente os valores de custo, refaço os calculos com a nova margem e pronto.
Mas se eu quiser por exemplo
Orçamento nº 1
Tipo de fornecimento [Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
Valor final = 180,00
Quero chegar este valor em 190,00 e preciso que o sistema me de a margem de lucro.
é meio confuso de entender, mas é neste esquema acima.
é o que eu disse acima ou seja ja postei a formula para chegar a esta margem de lucro.
veja um exemplo com valores:
[Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
onde
Se você colocar uma valor final de 2500, então sua margem de lucro em moeda seria 420
para descobrir essa margem em porcentagem bastaria dividir os 420 pelas soma dos produtos dividida por 100(cem)
seu lucro em procentagem seria %20.19
ps: no poste anterior postei uma formula para saber a porcentagem, por favor desconsidere-a.
veja um exemplo com valores:
[Ô]USINAGEM + AGREGADOS + FRETE + CAP[Ô]
onde
Citação:USINAGEM = 1000
AGREGADOS = 700
FRETE = 180
CAP = 200
(1000+700+180+200) = 2080
Se você colocar uma valor final de 2500, então sua margem de lucro em moeda seria 420
para descobrir essa margem em porcentagem bastaria dividir os 420 pelas soma dos produtos dividida por 100(cem)
Citação:420 / (2080/100) = lucro em porcentagem
420 / 20.8 = % 20,192307692307692307692307692308
seu lucro em procentagem seria %20.19
ps: no poste anterior postei uma formula para saber a porcentagem, por favor desconsidere-a.
Nao deu certo. Estou quase dando um laço até o resultado ser o mais proximo do correto.
poste o código que talvez fique mais fácil ajudar
Acho que consegui. Fiz o seguinte
Nao sei se é a maneira mais certa, mas nem no excel isso bate 100%.
Porem vou testar mais e se bater cabeça aqui, posto novamente.
Dim vartaxaadm As Double
Dim valor As Double
Dim valorfinal As Double
Dim varaux As Double
vartaxaadm = dsOrc!taxaadm
valorfinal = 0
Do Until (valorfinal = txtValorDestino)
If CDbl(txtValorDestino) > CDbl(lblTotal) Then
vartaxaadm = Format(vartaxaadm + 0.01, [Ô]###,##0.00[Ô])
Else
vartaxaadm = Format(vartaxaadm - 0.01, [Ô]###,##0.00[Ô])
End If
Set dsdetorc = db.OpenRecordset([Ô]select * from detorcamentos where codorc=[Ô] & cmbOrc, dbOpenDynaset)
Do While Not dsdetorc.EOF
varaux = Format(dsdetorc!valor + (CDbl(dsdetorc!valor) * ((CDbl(dsOrc!imposto) + CDbl(vartaxaadm)) / 100)), [Ô]###,##0.00[Ô])
If dsdetorc!descricao = [Ô]CAP[Ô] And pf_Achastring([Ô]CAP[Ô], cmbTipofornecimento) = True Then
valor = varaux
ElseIf (dsdetorc!descricao = [Ô]BRITA 1[Ô] Or dsdetorc!descricao = [Ô]BRITA GRADUADA[Ô] Or dsdetorc!descricao = [Ô]BRITA 2[Ô] Or dsdetorc!descricao = [Ô]BRITA 3[Ô] Or dsdetorc!descricao = [Ô]PEDRISCO[Ô] Or dsdetorc!descricao = [Ô]PÓ DE PEDRA[Ô] Or dsdetorc!descricao = [Ô]PEDRISCO COM PÓ[Ô]) And pf_Achastring([Ô]AGREGADOS[Ô], cmbTipofornecimento) = True Then
valor = varaux
ElseIf dsdetorc!descricao = [Ô]CAL[Ô] Or dsdetorc!descricao = [Ô]CAL HIDRATADO[Ô] Then
valor = varaux
End If
valorfinal = Format(valorfinal + valor, [Ô]###,##0.00[Ô])
dsdetorc.MoveNext
Loop
If pf_Achastring([Ô]FRETE[Ô], cmbTipofornecimento) = True Then
valorfinal = Format(valorfinal + (CDbl(txtFrete) + (CDbl(txtFrete) * (CDbl(txtImposto) + CDbl(vartaxaadm)) / 100)), [Ô]###,##0.00[Ô])
End If
valorfinal = Format(valorfinal + (CDbl(txtUsinagem) + (CDbl(txtUsinagem) * (CDbl(txtImposto) + CDbl(vartaxaadm)) / 100)), [Ô]###,##0.00[Ô])
If CDbl(valorfinal) <> CDbl(txtValorDestino) Then
If CDbl(valorfinal - 0.01) = CDbl(txtValorDestino) Then
Exit Do
Else
valorfinal = 0
End If
End If
If CDbl(vartaxaadm) > 15.54 Then
[ô]MsgBox vartaxaadm
aa = aa
End If
Loop
If MsgBox([Ô]Foi encontrado o resultado esperado. A Taxa administrativa para [Ô] & Format(txtValorDestino, [Ô]###,##0.00[Ô]) & [Ô] é de [Ô] & vartaxaadm & [Ô].[Ô] & vbCrLf & _
[Ô]Deseja realmente alterar todos itens para atingir esta meta?[Ô], vbExclamation + vbYesNo, [Ô]ATENÇÃO![Ô]) = vbYes Then
pf_AlteraTodosParaTxAdm (taxanova)
End If
Nao sei se é a maneira mais certa, mas nem no excel isso bate 100%.
Porem vou testar mais e se bater cabeça aqui, posto novamente.
Gente, este meu codigo funcionou parcialmente.
Porem com alguns resultados quebrados EX 52,15 o codigo nao encontra o resultado esperado, e entao o sistema trava em laço infinito. Alguem tem alguma dica ?
Porem com alguns resultados quebrados EX 52,15 o codigo nao encontra o resultado esperado, e entao o sistema trava em laço infinito. Alguem tem alguma dica ?
Tópico encerrado , respostas não são mais permitidas