Fonction de VBA dans une cellule Excel

Bonjour à tous,

Débutant en VBA j'ai quelques problèmes pour passer du code VBA à une formule dans les cellules d'excel.

Voici mon code de basse qui fonctionne :

 

For cas = 0 To derniere_ligne - 11
        For ann = 0 To tab_const_bas(2) - 1

            If ann + 1 = tab_donne(cas, 8) Then

                If tab_donne(cas, 2) = "Income" Then
                        Cells(cas + 2, ann + 2) = tab_donne(cas, 10) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5),     tab_donne(cas, 6)))
                Else
                        Cells(cas + 2, ann + 2) = -tab_donne(cas, 10) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)))
                End If

               ElseIf ann + 1 >= tab_donne(cas, 8) And ann + 1 <= tab_donne(cas, 9) Then

                        Cells(cas + 2, ann + 2) = Cells(cas + 2, ann + 1) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)))
            Else
                    Cells(cas + 2, ann + 2) = 0
            End If
        Next
    Next

Avec tab_donne comme tableau.

Ce que j'aimerais c'est à la place d'avoir le résultat dû calcule dans les différentes cellules du fichier excel, et d'avoir l'équation entière de telle sorte à pouvoir recalculer et voir les variations du rand.

J'ai essayé avec l'extension .FormulaR1C1 sur Cells(....), mais cela ne me donne que des erreurs...

Merci d'avance de votre aide et bonne journée

bonjour

vous voulez une chose comme ca :

For cas = 0 To derniere_ligne - 11
        For ann = 0 To tab_const_bas(2) - 1

            If ann + 1 = tab_donne(cas, 8) Then

                If tab_donne(cas, 2) = "Income" Then
                        Cells(cas + 2, ann + 2) = (-1) * tab_donne(cas, 10) & " * " & "(1 + " & WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)) & ") = " _
                        & tab_donne(cas, 10) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)))
                Else
                        Cells(cas + 2, ann + 2) = (-1) * tab_donne(cas, 10) & " * " & "(1 + " & WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)) & ") = " _
                        & (-1) * tab_donne(cas, 10) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)))
                End If

            ElseIf ann + 1 >= tab_donne(cas, 8) And ann + 1 <= tab_donne(cas, 9) Then

                        Cells(cas + 2, ann + 2) = Cells(cas + 2, ann + 1) & " * " & "(1 + " & WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)) & ") = " _
                        & Cells(cas + 2, ann + 1) * (1 + WorksheetFunction.Norm_Inv(Rnd, tab_donne(cas, 5), tab_donne(cas, 6)))
                Else
                    Cells(cas + 2, ann + 2) = 0
            End If
        Next
    Next

ou autre chose ( comportement de fonction exel par exemple ?!)

Bonjour merci beaucoup pour votre réponse.

Non malheureusement pas...

Ce que je cherche à faire est quelque chose ressemblant à cela :

Cells(cas + 2, ann + 2).FormulaR1C1 = "= " & tab_donne(cas, 10) & " & " (1+NORM.INV(RAND(); " & " & tab_donne(cas, 5) & " & ";" & " & tab_donne(cas, 6) & " & "))" "

Mais cela me dit que j'ai une Compile error et que je n'ai pas la fin du statement

Je ne trouve pas comment écrire correctement cette commande pour que j'ai à la fin de l'exécution du code, par exemple :

= 120 *(1+ NORM.INV(RAND();0.2;0.6))

Merci d'avance de votre aide

BONJOUR

essayer avec ca :

Sub test()
Range("A1").FormulaR1C1Local = "=1+2"
End Sub
Rechercher des sujets similaires à "fonction vba"