Calcul une f(x,y) et en plus déterminer la valeur MIN avec les variables x

Sub CalculSurfaceMin()

Dim s As Double, sz As Double, sy As Double

Dim x As Double, y As Double, z As Double

Dim i As Long, j As Long

Dim sz0 As Double, sy0 As Double
sy0 = 10000
       For i = 1 To 31 Step 1
      y = 41 - i
      Cells(62, 18).Value = y
      sz0 = 10000
           For j = 1 To 41 Step 1
           z = 41 - j
           x = 100 - y - z
           Cells(61, 18).Value = x
           sz = Cells(64, 20).Value 
' cette cellule contienne un formule de calcul de surface
             If (sz <= sz0) Then
             sz0 = sz
             If (sz > sz0) Then
             Cells(54, 18).Value = y
             Cells(53, 18).Value = x
             Cells(55, 18).Value = z
             Cells(56, 18).Value = sz0
             End If
             End If
          Next j
          sz0 = Cells(64, 20).Value
             If (sz0 <= sy0) Then
             sy0 = sz0
             If (sz0 > sy0) Then
             Cells(54, 18).Value = y
             Cells(53, 18).Value = x
             Cells(55, 18).Value = z
             Cells(56, 18).Value = sy0
             End If
             End If
      Next i
End Sub

Salut Excel:

SVP j'ai une feuille Excel qui ma calculer une surface, et puis je crée un code VBA pour déterminer la surface MIN avec son paramètres (X,Y,Z) automatique, le calculer de cette surface très compliqué mais je juste déterminer la surface minimale tant que X,Y,Z vari .

merci

Bonjour,

excel te propose un outil pour ça : le solveur

Sinon tu ne dis pas quel est ton problème, et mettre un fichier de travail est un plus pour motiver les bonnes volontés.
eric

bonjour Eriic et merci pour votre réponse,

je veux de savoir si mon code VBA est juste, en plus c'est un fichier très personnel.

le problème que je trouve la boucle n'arrête pas

le but de calcul la surface pour X et pour y et z , plus déterminer automatique la Surface MIN avec son paramètres xyz.

merci.

Tu mets le minimum pour le pb et des valeurs bidons (nom1, etc) et le fichier n'est plus personnel.

Je ne vois pas de raison que ça ne s'arrête pas, tu dois sortir normalement du programme

Anomalie constatée : tu n'inscris pas z sur ta feuille avant de récupérer le calcul. Normal ?

Et si ta formule est vraiment lourde, il faut synchroniser vba avec excel sinon vba va plus vite et tu récupères un résultat non encore évalué.
Mais sans fichier...
eric

Bonjour Eriic,

voici mon fichier simplifie.

merci.

Sub CalculSurfaceMin()
Dim s As Double, sz As Double, sy As Double
Dim x As Double, y As Double, z As Double
Dim i As Long, j As Long
Dim sz0 As Double, sy0 As Double

sz0 = 1000

    For i = 1 To 31 Step 1

      y = 41 - i
      Cells(47, 4).Value = y
      sy0 = 1000
           For j = 1 To 41 Step 1

           z = 41 - j
           x = 100 - y - z
           Cells(46, 4).Value = x
           sz = Cells(49, 4).Value
             If (sz < sz0) Then
             sz0 = sz
             End If
             If (sz > sz0) Then
             Cells(47, 10).Value = y
             Cells(46, 10).Value = x
             Cells(48, 10).Value = z
             Cells(49, 10).Value = sz0
           End If
          Next j

            sz0 = Cells(49, 10).Value
             If (sz0 < sy0) Then
             sy0 = sz0
             End If

            If (sz0 > sy0) Then
             Cells(47, 10).Value = y
             Cells(46, 10).Value = x
             Cells(48, 10).Value = sy0
           End If

      Next i

End Sub

Oui, et bien il termine en 10 s...

bonne reçu,

SVP montrez moi où le problème.

merci

Houlala, reviens quand les vapeurs d'alcool se seront dissipées, là c'est encore un peu tôt...

Bonjour,

si j'ai bien compris il faut trouver les valeurs x,y, et z qui minimisent le résultat de la formule f(y,m) =((x+y+z)*(x*y*z))^.5 où y=y,z=y+m,x=100-z-y et y compris entre 10 et 40 et m entre 1 et 40

comme x peut prendre des valeurs négatives (non valable pour l'exposant 1/2) qu'on rejette et des valeurs nulles le minimum sera toujours 0.

comme la possibilité de mettre un fichier est hors service pour le moment, je mets la macro sans fichier.

edit : upload fichier à nouveau possible.

Sub CalculSurfaceMin()
    Dim s As Double, sz As Double, sy As Double
    Dim x As Double, y As Double, z As Double
    Dim sz0 As Double, sy0 As Double
    sz0 = 1000000
    For y = 10 To 40
        For m = 1 To 40
            z = y + m
            x = 100 - z - y
            If x < 0 Then x = 0
            sz = ((x + y + z) * (x * y * z)) ^ 0.5
            Cells(43 - m, 43 - y) = sz ' enlever la fusion de cellules pour voir le résultat
            If (sz < sz0) Then
                sz0 = sz
                Cells(47, 10).Value = y
                Cells(46, 10).Value = x
                Cells(48, 10).Value = z
                Cells(49, 10).Value = sz0
            End If
        Next m
    Next y
End Sub

bonsoir H2so4,

merci pour votre réponse, oui c'est marche très bien merci.

j'ai un autre cas, que je n'ai pas la fonction de calcul de surface , mais je la calcul par une série des opérations compris des intégrales et des interpolation , donc la même boucle que je propose et sans équations s(x.y.z).

merci très simple et très pratique.

merci infiniment.

Rechercher des sujets similaires à "calcul determiner valeur min variables"