FUNCAO SIMILAR AO ATINGIR META DO EXCEL

FBGSYSTEMS 17/09/2012 11:46:17
#409806
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.
ARES 17/09/2012 12:51:15
#409811
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.


MARCELO.TREZE 17/09/2012 12:56:52
#409814
na realidade pelo que entendi

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)



FBGSYSTEMS 17/09/2012 13:20:06
#409819
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.
MARCELO.TREZE 17/09/2012 14:02:42
#409823
é 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

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.


FBGSYSTEMS 17/09/2012 15:23:57
#409832
Nao deu certo. Estou quase dando um laço até o resultado ser o mais proximo do correto.

MARCELO.TREZE 17/09/2012 16:08:06
#409836
poste o código que talvez fique mais fácil ajudar
FBGSYSTEMS 17/09/2012 17:11:02
#409838
Acho que consegui. Fiz o seguinte

      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.
FBGSYSTEMS 10/10/2012 10:16:38
#411695
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 ?
Tópico encerrado , respostas não são mais permitidas