MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Solução de Problema

    Compartilhe

    matpalmeiras7
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 26/05/2017

    Solução de Problema

    Mensagem  matpalmeiras7 em Sex 26 Maio 2017, 12:43

    Bom dia, tenho o seguinte problema a resolver: " A ideia é sabermos o capital inicial disponível, informações sobre possíveis fundos de investimento e o capital final desejado. O programa deve verificar para cada fundo, qual o prazo necessário para alcançar o capital desejado. Com base nos prazos calculados e no perfil do investidor, o programa deve aconselhar qual o melhor fundo para investimento.
    O programa deve receber do usuário um perfil de risco (Muito Alto, Alto, Médio, Baixo), um capital inicial e um capital final desejado. Estes dados estarão em uma segunda planilha, conforme explicado abaixo.

    Com estes dados, o programa deve selecionar o fundo mais adequado para aquele investidor, levando em conta:

    O capital inicial deve ser pelo menos igual ao mínimo inicial do fundo.
    O risco do fundo deve ser menor ou igual ao do perfil do investidor.
    O número de meses necessários deve ser o menor entre os fundos que satisfazem as duas condições acima.
    O programa deverá preencher uma segunda planilha, chamada Resultados.

    Na primeira linha da planilha Resultados, o usuário deve colocar os dados de entrada: na célula A1 deverá aparecer o perfil (ex. "Baixo"), na B1 o capital inicial (ex. "100") e na C1 o capital final (ex. "1000").

    Na célula A2 deve aparecer "Fundo" e na B2 deve aparecer "Meses"

    A partir da terceira linha, o programa deverá colocar na primeira coluna o nome do fundo e na segunda coluna o número de meses necessários para atingir o capital final.

    Seu programa deve ter no mínimo as funções e macros auxiliares descritas abaixo:

    Function Prazo(CapInicial As Double, CapFinal As Double, TaxaAdmin As Double, Rentabilidade As Double) As Integer
    Função que recebe os quatro parâmetros reais - dois fornecidos pelo usuário na planilha de Resultados e dois lidos da tabela de fundos - e devolve um inteiro correspondendo ao número de meses necessários para atingir o capital final. Como a taxa de administração geralmente é dada por ano, o valor a ser subtraido da rentabilidade é TaxaAdmin/12.

    Sub PreencheTabela(CapInicial As Double, CapFinal As Double)
    Macro auxiliar que recebe os valores do capital inicial e do capital final e preenche as linhas da planilha Resultados com o nome de cada fundo e o prazo necessário. Esta macro deve utilizar a função Prazo.

    Function AvaliaRisco(Perfil As String, Linha As Integer) As Boolean
    Função que verifica se um certo fundo (especificado pelo parâmetro Linha, que indica a linha na tabela de fundos) está de acordo com o perfil do usuário.



    Vocês podem criar quantas funções e macros quiserem, desde que tenham no mínimo as três acima. Além disso, a coluna D da planilha Resultados pode ser usada de rascunho durante a execução do programa - lembre-se de apagá-la no final. A resposta deve ser dada nas células D1 e E1, informando o nome do fundo mais adequado ao investidor em D1 e o número de meses necessário em E1.

    IMPORTANTE:

    a macro principal, que vai chamar as demais e preencher a tabela deve ter o mesmo cabeçalho para todos: Sub Main()
    a planilha com a tabela de rentabilidade deve se chamar "Rentabilidade"
    a ordem entre as planilhas "Rentabilidade" e "Resultado" não importa, vocês devem sempre se referir às células pelo "nome completo", i.e., identificando a planilha."

    Para isso, desenvolvi o programa abaixo, mas penso que não está correto:

    "Sub Main()
    Dim lin As Integer
    Dim menor As Integer
    Dim fundo As String

    PreencheTabela 'aciona a macro auxiliar para preencher a tabela
    AvaliaRisco = True 'checa se o risco é compativel
    lin = 3
    menor = Worksheets(Resultados).Cells(2, 2) 'primeiro elemento dos meses
    fundo = Worksheets(Resultados).Cells(1, 2)

    While Worksheets(Resultados).Cells(lin, 2) <> 0
    If Worksheets(Resultados).Cells(lin, 2) < menor Then
    menor = Worksheets(Resultados).Cells(lin, 2) 'compara para ver qual é menor
    End If

    lin = lin + 1


    Wend
    Worksheets(Resultados).Cells(1, 5) = menor
    Worksheets(Resultados).Cells(1, 4) = fundo



    End Sub


    Function Prazo(CapInicial As Double, CapFinal As Double, TaxaAdmin As Double, Rentabilidade As Double) As Integer

    Dim lin As Integer
    Dim meses As Integer


    lin = 2
    meses = 0
    CapInicial = Worksheets(Resultado).Cells(1, 2)
    CapFinal = Worksheets(Resultado).Cells(1, 3)
    TaxaAdmin = Worksheets(Rentabilidade).Cells(lin, 3)
    Rentabilidade = Worksheets(Rentabilidade).Cells(lin, 5)


    While CapInicial < CapFinal

    CapInicial = CapInicial + (CapInicial * Rentabilidade / 100) * (1 - TaxaAdmin / 1200) 'Como a taxa de Adm deve ser dividida por 12, ela se torna 1200 pois também é necessario dividir por 100 devido se tratar de uma porcentagem
    meses = meses + 1 'para contar quantos meses são necessários para atingir o capital final

    Wend

    Prazo = meses 'a função recebe o valor do numero de meses necessarios pra atingir o capital final



    End Function

    Sub PreencheTabela(CapInicial As Double, CapFinal As Double)
    Dim NomeFundo As String
    Dim PrazoFundo As Integer
    Dim lin As Integer

    lin = 2
    CapInicial = Worksheets(Resultado).Cells(1, 2)
    CapFinal = Worksheets(Resultado).Cells(1, 3)
    NomeFundo = Worksheets(Rentabilidade).Cells(lin, 1)



    While Not IsEmpty(Worksheets(Rentabilidade).Cells(lin, 1))
    Worksheets(Resultados).Cells(lin, 1) = NomeFundo 'imprimir o nome do fundo nas celulas pedidas
    PrazoFundo = Prazo 'ativar a função Prazo
    Worksheets(Resultados).Cells(lin, 2) = PrazoFundo 'imprimir o numero de meses necessário nas celulas pedidas"
    O que está incorreto? Obrigado
    A tabela está anexada também.

    matpalmeiras7
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 26/05/2017

    oi

    Mensagem  matpalmeiras7 em Seg 29 Maio 2017, 02:23

    alguem?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9282
    Registrado : 04/11/2009

    Re: Solução de Problema

    Mensagem  JPaulo em Seg 29 Maio 2017, 09:49

    Este é um fórum exclusivamente Ms Access.

    Tópico movido para Off-Topic.


    .................................................................................
    Contribua com o maximoaccess, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    matpalmeiras7
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 26/05/2017

    Re: Solução de Problema

    Mensagem  matpalmeiras7 em Seg 29 Maio 2017, 21:04

    perdão, achei que o VBA se aplicasse nesse caso do excel também.

      Data/hora atual: Qua 28 Jun 2017, 21:57