Bonjour tout le monde,
je cherche à inscrire des formules dans les cellules excel via VBA pour ensuite pouvoir utiliser le solveur excel sur ces cellules.
Les formules étant très longues et ma variable calculée étant fonction de différents cas, je voulais commencer par entrer les 5 possibilités de calcul de ma variable dans 5 cellules excel :
Petit aperçu du type de formule :
ActiveSheet.Cells(5, 28).Formula = "((((((Sqr(1300#) - ActiveSheet.Cells(i, 16).Value) ^ 2) * 1300#) / (2# * 400# * 900#)) * 400#) / 1300#) + ((2# * ActiveSheet.Cells(1, 28) * Sqr(1300#) + 900#) / (2# * 900#)) - ((1 / (2# * 900#)) * (Sqr(1300#) - Sqr(((((Sqr(1300#) - ActiveSheet.Cells(i, 16).Value) ^ 2) * 1300#) / (2# * 400# * 900#)) * 2# * 400# * 900# / 1300#)) ^ 2)"
1ères questions à ce niveau:
Est-ce qu'il faut laisser le # pour que la dimension des nombres soit un Double ou est-ce inutile?
Faut-il utiliser le Range pour aller chercher les valeurs des cellules ou le ActiveSheet.cells.value fonctionne?
Pour la racine, c'est bien sqr?
Seconde partie :
Insérer une fonction si qui aille me chercher les bonnes formules en fonction des valeurs d'une autre variable:
For i = 2 To 178
ActiveSheet.Cells(i, 14).Formula = "=If(ActiveSheet.Cells(i, 15).Value <> "",If ((ActiveSheet.Cells(i, 16).Value) >= (ActiveSheet.Cells(i, 19) + ActiveSheet.Cells(1, 28)),ActiveSheet.Cells(4, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(i, 19).Value,ActiveSheet.Cells(5, 28),If (ActiveSheet.Cells(i, 16).Value >= (ActiveSheet.Cells(i, 20).Value + ActiveSheet.Cells(1, 28)),ActiveSheet.Cells(6, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(i, 20).Value,ActiveSheet.Cells(7, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(1, 28),ActiveSheet.Cells(8, 28),ActiveSheet.Cells(9, 28)))))))"
Next
Je n'ai pas trouvé quelle synthaxe utiliser pour appeler la fonction SI, pour le moment le mieux que j'ai réussi à fare c'est insérer les formules sous forme de texte!
Je n'ai pas l'habitude d'utiliser cette fonctionnalité de VBA alors si qqun pouvait me dépanner dans la synthaxe à utiliser je lui en serai très reconnnaissante
je cherche à inscrire des formules dans les cellules excel via VBA pour ensuite pouvoir utiliser le solveur excel sur ces cellules.
Les formules étant très longues et ma variable calculée étant fonction de différents cas, je voulais commencer par entrer les 5 possibilités de calcul de ma variable dans 5 cellules excel :
Petit aperçu du type de formule :
ActiveSheet.Cells(5, 28).Formula = "((((((Sqr(1300#) - ActiveSheet.Cells(i, 16).Value) ^ 2) * 1300#) / (2# * 400# * 900#)) * 400#) / 1300#) + ((2# * ActiveSheet.Cells(1, 28) * Sqr(1300#) + 900#) / (2# * 900#)) - ((1 / (2# * 900#)) * (Sqr(1300#) - Sqr(((((Sqr(1300#) - ActiveSheet.Cells(i, 16).Value) ^ 2) * 1300#) / (2# * 400# * 900#)) * 2# * 400# * 900# / 1300#)) ^ 2)"
1ères questions à ce niveau:
Est-ce qu'il faut laisser le # pour que la dimension des nombres soit un Double ou est-ce inutile?
Faut-il utiliser le Range pour aller chercher les valeurs des cellules ou le ActiveSheet.cells.value fonctionne?
Pour la racine, c'est bien sqr?
Seconde partie :
Insérer une fonction si qui aille me chercher les bonnes formules en fonction des valeurs d'une autre variable:
For i = 2 To 178
ActiveSheet.Cells(i, 14).Formula = "=If(ActiveSheet.Cells(i, 15).Value <> "",If ((ActiveSheet.Cells(i, 16).Value) >= (ActiveSheet.Cells(i, 19) + ActiveSheet.Cells(1, 28)),ActiveSheet.Cells(4, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(i, 19).Value,ActiveSheet.Cells(5, 28),If (ActiveSheet.Cells(i, 16).Value >= (ActiveSheet.Cells(i, 20).Value + ActiveSheet.Cells(1, 28)),ActiveSheet.Cells(6, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(i, 20).Value,ActiveSheet.Cells(7, 28),If (ActiveSheet.Cells(i, 16).Value >= ActiveSheet.Cells(1, 28),ActiveSheet.Cells(8, 28),ActiveSheet.Cells(9, 28)))))))"
Next
Je n'ai pas trouvé quelle synthaxe utiliser pour appeler la fonction SI, pour le moment le mieux que j'ai réussi à fare c'est insérer les formules sous forme de texte!
Je n'ai pas l'habitude d'utiliser cette fonctionnalité de VBA alors si qqun pouvait me dépanner dans la synthaxe à utiliser je lui en serai très reconnnaissante