Min et max fonction sur vba/excel

Fermé
Lola - 29 juil. 2009 à 07:28
 lola - 2 août 2009 à 17:53
Bonjour,
je suis vraiment mal prise, je ne sais pas si ce sujet a été déjà expliqué par le passé (j,ai chercher mais n'ai pas trouver ce qui pouvait m'aider vraiment)
Alors voilà, je dois élaborer un sub sur vba qui servira à trouver le x et le y qui vont minimiser ou maximiser une fonction entrée sur excel. le x et le y ne devront pas sortir des bornes inférieures et supérieures que l,on aura également entrées sur excel.


voici la page d,excel

Nombre de pas: 100

Bornes
Lim. Inférieure Lim. Supérieure
Variable x: 0; 5
Variable y: 0 ; 10

x:
y:
f(x,y): (entrer ici une fct à deux variable soient x et y)

(ici il y a un commandButton qui lorsqu'on le clique il exécute la macro qui sert à trouver les solutions)



recherche: Maximum ou minimum (choisir selon une combobox)

Résultat:
x optimal:
y optimal:
f(x,y) optimal:



voici le code vba que j,ai élaboré jusqu,à maintenant

Sub Trouve_min_max_2()
Dim recherche As String, fct As String, fct1 As String, fct2 As String
Dim resultat As Double, xOptimal As Double, yOptimal As Double


Min_x = Cells(5, 2)
Max_x = Cells(5, 3)
Min_y = Cells(6, 2)
Max_y = Cells(6, 3)
Pas = Cells(1, 2)
sauts_x = (Max_x - Min_x) / Pas
sauts_Y = (Max_y - Min_y) / Pas
recherche = Cells(12, 2)
fct = Cells(10, 2)




For y = Min_y To Max_y Step sauts_Y
y = Cells(8, 2)
fct1 = Replace(fct, "y", y)

For x = Min_x To Max_x Step sauts_x
x = Cells(9, 2)
fct2 = Replace(fct1, "x", x)

fct = fct2

If y = Min_y And x = Min_x Then
resultat = fct 'je veux que la premiere valeur de la boucle, devient un result
resultat = Cells(14, 2)
Min_x = Cells(8, 2)
Min_y = Cells(9, 2)
End If

If recherche = "maximum" Then
If resultat < fct Then
resultat = fct
xOptimal = x
yOptimal = y
fOptimal = Cells(17, 2) ' et on laffiche
xOptimal = Cells(15, 2)
yOptimal = Cells(16, 2)


End If
End If

If recherche = "maximum" Then ' si le nouveau resultat est plus petite que l'ancien result, alors..
If resultat > fctThen ' on modifie le result
resultat = fct
xOptimal = x
yOptimal = y
fOptimal = Cells(17, 2) ' et on l'affiche
xOptimal = Cells(15, 2)
yOptimal = Cells(16, 2)
End If
End If

Next x
Next y

end sub

je sais que je dois avoir beaucoup d'erreur là dedans mais je suis débutante en programmation.Je vous remecie d'avance pour votre aide.

lola
A voir également:

2 réponses

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 155
2 août 2009 à 11:56
Bonjour,

Pour tout avoué, je ne comprends pas bien ta demande.
Ton coe a l'air correct sauf qu'il faut se méfier des and dans les conditions.
Ton code ne marche-t-il pas comme tu le veux?
-2
salut,

je te remercie de repondre:) mais j'ai trouve le probleme et apres des heures et des heurs de tatonnement, j'ai finalement reussi a faire fonctionner mon programme. je te remercie quand meme

lola
-2