Min et max fonction sur vba/excel
Lola
-
lola -
lola -
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
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:
- Min et max fonction sur vba/excel
- Fonction si et excel - Guide
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide