Bonjour à tous,
j’ai récemment essayé de faire un nouveau programme, mais étant débutant je n’y arrive pas. C’est donc naturellement que je me tourne vers vous.
Le but :
Le but de ce programme est de déterminer la masse maximale que l’on peut produire en prenant en compte les contraintes d’équipements (Masses de dénoyages), et la formulation de produit (pourcentages massiques, quantités de matières dispo.
Les informations importantes :
-Les variables se situerons : le dispersant dans la cellule A2, le choix de la chaîne dans la cellule B2, la quantité disponible d’huile dans la cellule D2, la quantité disponible d’eau dans la cellule D3, et la quantité disponible de sel dans la cellule D4.
-Pour la recette du dispersant on sait qu’il faut 20% d’huile, 70% d’eau, et 10% de sel.
-Les masses de dénoyages se situent entre 0kg et 20683kg, 35456kg et 45798kg, 61701kg et 72042kg, et la masse totale ne doit pas dépasser 113200kg.
Le programme :
Si le dispersant A2=ADX500, et la chaîne B2=Chaîne 1.
Alors on calcul la masse d’huile et la masse de sel. Pour cela on prend la masse maximum d’eau disponible de la cellule D3.
Masse d’huile = 0,2*MasseEAU/0,7
Masse de sel = 0,1*MasseEAU/0,7
On vérifie que la masse d’huile et la masse de sel sont inférieures aux quantités disponibles dans les cellules D2 et D4. Car on ne peut pas produire avec ce que l’on a pas.
Sinon on enlève 1000kg de la masse d’eau et on recommence le programme jusqu’a ce que la masse d’huile et la masse de sel sont inférieures aux quantités disponibles.
Si la masse d’huile et de sel sont inférieures aux quantités disponibles alors on additionne la masse de sel, la masse d’huile, et la masse d’eau. Et on vérifie que la masse totale ne se situe pas dans les masses dénoyages et qu’elle n’est pas supérieure à la masse max.
Sinon on enlève 1000kg de la masse d’eau et on recommence le programme jusqu’a ce que la masse totale ne soit plus située dans les masses de dénoyages.
Ce que j’ai essayé de faire :
Sub TBmax()
'Définition des variables
Dim Dispersants As String
Dim Chaînes As String
Dim Huile As Single
Dim Eau As Single, Masse(1 To 3) As Single
Dim Sel As Single
Dim Continuer As Boolean, i As Integer
'emplacement des valeurs
Dispersants = Worksheets("Accueil").Cells(2, 1).Value
Chaînes = Worksheets("Accueil").Cells(2, 2).Value
Huile = Worksheets("Accueil").Cells(2, 4).Value
Eau = Worksheets("Accueil").Cells(3, 4).Value
Sel = Worksheets("Accueil").Cells(4, 4).Value
'************************ADX500************************
If Cells(2, 1).Value = "ADX500" And Cells(2, 2).Value = "Chaîne 1" Then
'on calcul la masse d’huile et de sel nécessaire qu'il faut si on utilise l'entièrté de l’eau
Do While Not Continuer And Eau > 0
Masse(1) = 0.20 * Eau / 0.70
Masse(2) = 0.1 * Eau/ 0.70
Masse(3) = Masse(1) + Masse(2) + Eau
'vérification si masse 1 et 2 inférieur aux quantités dispo et si la masse 3 totale se situe dans les volumes dénoyages ou et supérieur au volume max
For i = 1 To 2
Select Case Masse(i)
Case Masse(1) < Huile, Masse(2) < Sel
i = 3
Select Case Masse(3)
Case 0 To 20683, 35456 To 45798, 61701 To 72042, Is >= 113200
'si la masse totale est supérieur au volume maximum ou est compris dans les volumes de dénoyage alors on enlève 1000kg à la masse initiale d’eau
Eau = Application.Max(0, Eau - 1000)
Continuer = False
Exit For
Case Else
Continuer = True 'Conditions OK, on passe à la suite
End Select
End Select
Next i
Loop
Range("H9").Value = Masse(3)
End If
End Sub
Je suis reconnaissant pour toute aide que vous pouvez me fournir, je suis à l’écoute si vous avez des questions.
Cordialement.
Determiner taille possible.xlsx (8,8 Ko)