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) mais j'ai vraiment mais vraiment besoin d'aide.
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
Fct x^2 * y^2

Bornes inférieures supérieures
x 0 5
y 0 6

X 4,9999999999999900
y 5,9999999999999900
f(x;y) 0,0000000000000000

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

sauts_x 0,05
sauts_y 0,06
recherche:choisir Minimum ou selon un combobox
Resultat 0
xOptimal 4,9999999999999900
yOptimal 5,9999999999999900




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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Sub trouve_min_ou_max()
 
Dim recherche As String, fct As String, fct2 As String, fct1 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 = Cells(12, 2)
sauts_Y = Cells(13, 2)
recherche = Cells(14, 2)
fct = Cells(2, 2)
 
 
For y = Min_Y To Max_Y Step sauts_Y
 Cells(9, 2) = y
    fct1 = Replace(fct, "y", y)
 
For X = Min_X To Max_X Step sauts_X
Cells(8, 2) = X
    fct2 = Replace(fct1, "x", X)
 
 Sheets("fonction").Cells(10, 2).Value = fct2
 
 
 
If y = Min_Y And X = Min_X Then
            fct2 = Cells(10, 2)
            Sheets("fonction").Cells(15, 2).Value = resultat
            Sheets("fonction").Cells(8, 2).Value = Min_X
            Sheets("fonction").Cells(9, 2).Value = Min_Y
        End If
 
        If recherche = "Maximum" Then
            If resultat > Cells(10, 2) Then
                 Cells(10, 2) = resultat
                xOptimal = X
                yOptimal = y
                Sheets("fonction").Cells(15, 2).Value = resultat
                Sheets("fonction").Cells(16, 2).Value = xOptimal
                Sheets("fonction").Cells(17, 2).Value = yOptimal
 
            End If
         End If
 
        If recherche = "Minimum" Then
            If resultat < Cells(9, 2) Then '
                 Cells(10, 2) = resultat
                xOptimal = X
                yOptimal = y
                Sheets("fonction").Cells(15, 2).Value = resultat
                Sheets("fonction").Cells(16, 2).Value = xOptimal
                Sheets("fonction").Cells(17, 2).Value = yOptimal
 
            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.Cela me donne toujours les mêmes valeurs pour x et y qu'importe si je cherche le maximum ou le minimum, ce qui ne fait pas beaucoup de sens.Je vous remecie d'avance pour votre aide car j'en ai vraiment besoin.

lola