Besoin d'aide pour des codes

lina_bou13

XLDnaute Nouveau
Bonsoir , je reviens vers vous
mon encadreur m'a donné une application que je dois présenter au jury lors de ma soutenance, et je n'arrive pas à comprendre exactement le code :(
Est ce que quelqu'un parmi vous pourrez m'expliquer étape par étape le code? :( :(
Je suis vraiment débutante en VBA , et je galère ma soutenance est dans pas très longtemps je suis en stress total :(
 

Pièces jointes

  • Application_Transport (1).xls
    151.5 KB · Affichages: 53

Dranreb

XLDnaute Barbatruc
C'est cette partie qui construit le tableau :
VB:
'Insérer les valeurs optimales des variables.
i = 1: j = 1
For Each c In Range("xij")
    Cells(BasTabD + 6 + j, 1 + i).Value = c.Value
    Cells(BasTabD + 6 + j, 1 + i).Select
    ActiveCell.NumberFormat = "0"                                            'Afficher avec 0 décimale.
    If i = N Then
        j = j + 1
        i = 0
    End If
    i = i + 1
Next c
 

lina_bou13

XLDnaute Nouveau
J'ai repris le code je l'ai plus ou moins compris, n'empêche que dans cette partie du code je bloque, quelqu'un pourrait la commenter s'il vous plait ?


Sub VersionSolveur()


'Premièrement, déterminer le numéro de la version du solveur.

OfficeVersion = Int(Val(Application.Version()))


'Puis, déterminer le nom du solveur.

Select Case OfficeVersion

Case Is <= 10

MsgBox "Votre version d'Excel n'est pas supportée par le gabarit; des erreurs sont possibles."

SolverName = "solver.xla" & "!"

Case 11 'Excel 2003

SolverName = "solver.xla" & "!"

Case 12 'Excel 2007

SolverName = "solver.xlam" & "!"

'Case 13 'version inconnue… à vérifier éventuellement!

Case Is >= 14 'Excel 2010

SolverName = "solver.xlam" & "!"

End Select


'Ensuite, réinitialiser le solveur.

If OfficeVersion <= 11 Then

Application.Run SolverName & "Solver.Solver2.Auto_open" 'N'existe pas dans Exc07.

End If

Application.Run SolverName & "SolverReset"



'Cocher Min ou Max pour la cible z.

If OfficeVersion <= 12 Then

If Sheets("Données").cboMaxMin.Text = "Max" Then

Application.Run SolverName & "SolverOk", "z", 1, "0", "xij"

Else

Application.Run SolverName & "SolverOk", "z", 2, "0", "xij"

End If

ElseIf OfficeVersion >= 14 Then

If Sheets("Données").cboMaxMin.Text = "Max" Then

Application.Run SolverName & "SolverOk", "z", 1, "0", "xij", 2, "Simplex LP"

Else

Application.Run SolverName & "SolverOk", "z", 2, "0", "xij", 2, "Simplex LP"

End If

Else

MsgBox " Version d'Excel non supportée par ce gabarit."

End If



End Sub


Sub Resoudre()

Dim symbole As Integer, i As Integer, j As Integer

Dim c As Object


Sheets("Modèle").Select

Call VersionSolveur


'Spécifier les contraintes technologiques.

Application.ReferenceStyle = xlR1C1

ActiveWorkbook.Names.Add Name:="MD", RefersToR1C1:= _

"=R" & DebTabM & "C" & NbVar + 4 & ":R" & DebTabM + M + N - 1 & "C" & NbVar + 4

Application.Run SolverName & "SolverAdd", _

"R" & DebTabM & "C" & NbVar + 2 & ":R" & DebTabM + M + N - 1 & "C" & NbVar + 2, 2, "MD"


'Spécifier les options du solveur.

If OfficeVersion <= 12 Then

Application.Run SolverName & "SolverOptions", 10000, 10000, 0.000001, True, False, 1, 1, 1, 0, _

False, 0.0001, True

ElseIf OfficeVersion >= 14 Then

Application.Run SolverName & "SolverOptions", 10000, 10000, 0.000001, True, False, 1, 1, 1, 0, _

False, 0.0001, True, 500, 0, True, False, 0.6, 10000, 1000, False, 3600

Else

MsgBox " Version d'Excel non supportée par ce gabarit."

End If

Application.Run SolverName & "SolverSolve", False, False


Application.ReferenceStyle = xlA1

Call PresenterSolution

End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Tout ça demande au solveur de régler les constantes "xij" de façon à ce que la formule "z" soit minimale tout en respectant comme contrainte que restent conformes aux "MD" les formules deux colonnes à leur gauche (et non une, car dans la colonne entre les deux il a mis à chaque ligne un signe "=" pour bien montrer que ce sont les contraintes pour le solveur)
Vous pouvez vérifier ça après un calcul réussi en appelant la boîte du solveur depuis la feuille où sont fait les calculs.
Vérifiez la cellule cible, les cellules variables et les contraintes.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Précisions: C'est effectué en exécutant des macros spécifiques du solveur.
solver.xlam!SolverReset pour le réinitialiser,
solver.xlam!SolverOk pour poser les principaux élément du problème et la condition du but à atteindre,
solver.xlam!SolverAdd pour ajouter une contrainte,
solver.xlam!SolverOptions pour orienter les histoires de précision, limites itérations et tout ça…
solver.xlam!SolverSolve pour lancer enfin la résolution.
Remarque: Le nom "MD" est défini dans le classeur juste avant l'ajout de la contrainte par rapport à cette plage.
 
Dernière édition:

Discussions similaires

Haut Bas