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: 55

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@lina_bou13
Est ce que quelqu'un* parmi vous pourrez m'expliquer étape par étape le code? :( :(
Ce quelqu'un ne devrait-il pas être ton encadreur ?

J'ai ouvert ta PJ et vu le nombre de modules (3) sans compter les procédures dans les feuilles, cela fait beaucoup de codes à commenter

Sinon on peut lire dans le code VBA
'Programmé par Patrick V******x
(C'est ton encadreur ? ou un autre personne ? Si oui tu la connais? Si oui c'est elle la mieux placer pour t'aider)

Le code est déjà commenté.

Où* exactement cela coince pour toi ?
(*: citer le nom du module, citer le nom de la procédure)

[avis personnel]
Si tu débutes en VBA, il est très étonnant qu'on te donne un code de cet acabit ?!?
Petite question indiscrète: quelles études implique un soutenance avec du VBA dedans ? ;)
[*avis personnel]
 

lina_bou13

XLDnaute Nouveau
Bonjour le fil, le forum

@lina_bou13

Ce quelqu'un ne devrait-il pas être ton encadreur ?

J'ai ouvert ta PJ et vu le nombre de modules (3) sans compter les procédures dans les feuilles, cela fait beaucoup de codes à commenter

Sinon on peut lire dans le code VBA
'Programmé par Patrick V******x
(C'est ton encadreur ? ou un autre personne ? Si oui tu la connais? Si oui c'est elle la mieux placer pour t'aider)

Le code est déjà commenté.

Où* exactement cela coince pour toi ?
(*: citer le nom du module, citer le nom de la procédure)

[avis personnel]
Si tu débutes en VBA, il est très étonnant qu'on te donne un code de cet acabit ?!?
Petite question indiscrète: quelles études implique un soutenance avec du VBA dedans ? ;)
[*avis personnel]


Non ce n'est pas mon encadreur qui a fait le code malheureusement, et il nous a donné le soin à moi et ma binôme de comprendre le programme seules :/ on galère vraiment, je ne connais pas la personne :(
Je suis étudiante en génie logistique et transport et mon thème est amélioration des tournées au moyen d'excel.


Si vous pouvez j'aimerai bien comprendre au moins la partie des résultats comment qu'il arrive a calculer le z*.
Merci quand même
 

lina_bou13

XLDnaute Nouveau
Code:
Sub PresenterSolution()
Dim c As Object
Dim i As Integer, j As Integer

'Insérer le titre du tableau.
Sheets("Données").Select
Cells(BasTabD + 5, 1).Value = "Le tableau suivant décrit un plan optimal de transport."
Cells(BasTabD + 5, 1).Select
Selection.Font.Bold = True
With Selection.Font
    .Name = "Arial":        .Size = 12:                          .Strikethrough = False
    .Superscript = False:   .Subscript = False:                  .OutlineFont = False
    .Shadow = False:        .Underline = xlUnderlineStyleNone:   .ColorIndex = 3
End With

'Copier le tableau.
Range(Cells(DebTabD, 1), Cells(BasTabD + 1, DroiteTabD + 1)).Select
Selection.Copy
Cells(BasTabD + 6, 1).Select
ActiveSheet.Paste
   
If DispT > DemT Then
    'Il faut insérer une colonne pour la destination fictive.
    Range(Cells(BasTabD + 6, 1 + N), Cells(BasTabD + 6 + M + 1, 1 + N)).Select
    Selection.Cut
    Cells(BasTabD + 6, 2 + N).Select
    ActiveSheet.Paste
    Range(Cells(BasTabD + 6, 3), Cells(BasTabD + 6 + M + 1, 3)).Select
    Selection.Copy
    Cells(BasTabD + 6, 1 + N).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Cells(BasTabD + 6, 1 + N).Value = "Disp. résiduelle"
    Cells(1, 1 + N).Select
    Selection.ColumnWidth = 14.57
    Cells(BasTabD + 6 + M + 1, 1 + N).Value = DispT - DemT
End If

If DemT > DispT Then
    'Il faut insérer une ligne pour l'origine virtuelle.
    Cells(BasTabD + 6 + M, 1).Select
    Selection.EntireRow.Insert
    Range(Cells(BasTabD + 6 + M - 2, 1), Cells(BasTabD + 6 + M - 2, 2 + N)).Select
    Selection.Copy
    Range(Cells(BasTabD + 6 + M - 1, 1), Cells(BasTabD + 6 + M - 1, 2 + N)).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Cells(BasTabD + 6 + M, 1).Value = "Dem. non satisfaite"
    Cells(BasTabD + 6 + M, 2 + N).Value = DemT - DispT

End If

'Insérer la valeur dans le coin inférieur droit.
Cells(BasTabD + 7 + M, 2 + N).Value = Application.WorksheetFunction.Max(DemT, DispT)
Cells(BasTabD + 7 + M, 2 + N).Select
With Selection.Interior
    .ColorIndex = 37
    .Pattern = xlSolid
End With
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    .ColorIndex = xlAutomatic
End With

'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

'Insérer la valeur optimale z* de la fonction-objectif.
Select Case (Sheets("Données").cboMaxMin.Value)
    Case "Max"
        Cells(BasTabD + 8 + M, 1).Select
        ActiveCell.FormulaR1C1 = "Profit maximal :      z*  ="
    Case "Min"
        Cells(BasTabD + 8 + M, 1).Select
        ActiveCell.FormulaR1C1 = " Coût minimal :     z*  ="
End Select
Cells(BasTabD + 8 + M, 1).Select
Selection.Font.Bold = True
Cells(BasTabD + 8 + M, 3).Value = Range("z").Value
Range(Cells(BasTabD + 8 + M, 1), Cells(BasTabD + 8 + M, 3)).Select
Selection.RowHeight = 18
Selection.Interior.ColorIndex = xlNone
Selection.Font.Bold = True
With Selection.Font
    .Name = "Arial":    .Size = 12
End With
Cells(BasTabD + 8 + M, 3).Select
Selection.Font.ColorIndex = 3
With Selection
    .HorizontalAlignment = xlCenter
End With

Cells(BasTabD + 8 + M, 3).Select
End Sub
Re,

@lina_bou13
Tu es sure?
Parce que dans ce module, il n'y a que cette procédure: Sub PresenterSolution()
Qui comme son nom l'indique ne fait que mettre en forme les données..
 

Staple1600

XLDnaute Barbatruc
Re

???
Oui la macro, je l'ai lu (et même allégée un chouia en supprimant ici et là quelque Select)
VB:
Sub PresenterSolution()
Dim c As Object
Dim i As Integer, j As Integer
'Insérer le titre du tableau.
With Sheets("Données").Cells(BasTabD + 5, 1)
  .Value = "Le tableau suivant décrit un plan optimal de transport."
  .Font.Bold = True
  .Font.Name = "Arial"
  .Font.Size = 12
  .Font.ColorIndex = 3
End With
'Copier le tableau.
Range(Cells(DebTabD, 1), Cells(BasTabD + 1, DroiteTabD + 1)).Copy
Cells(BasTabD + 6, 1).Select
ActiveSheet.Paste
If DispT > DemT Then
'Il faut insérer une colonne pour la destination fictive.
    Range(Cells(BasTabD + 6, 1 + N), Cells(BasTabD + 6 + M + 1, 1 + N)).Cut
    Cells(BasTabD + 6, 2 + N).Select
    ActiveSheet.Paste
    Range(Cells(BasTabD + 6, 3), Cells(BasTabD + 6 + M + 1, 3)).Copy
    Cells(BasTabD + 6, 1 + N).PasteSpecial Paste:=xlPasteFormats
    Cells(BasTabD + 6, 1 + N) = "Disp. résiduelle"
    Cells(1, 1 + N).ColumnWidth = 14.57
    Cells(BasTabD + 6 + M + 1, 1 + N).Value = DispT - DemT
End If
If DemT > DispT Then
'Il faut insérer une ligne pour l'origine virtuelle.
    Cells(BasTabD + 6 + M, 1).Select
    Selection.EntireRow.Insert
    Range(Cells(BasTabD + 6 + M - 2, 1), Cells(BasTabD + 6 + M - 2, 2 + N)).Copy
    Range(Cells(BasTabD + 6 + M - 1, 1), Cells(BasTabD + 6 + M - 1, 2 + N)).PasteSpecial Paste:=xlPasteFormats
    Cells(BasTabD + 6 + M, 1).Value = "Dem. non satisfaite"
    Cells(BasTabD + 6 + M, 2 + N).Value = DemT - DispT
End If
'Insérer la valeur dans le coin inférieur droit.
Cells(BasTabD + 7 + M, 2 + N).Value = Application.WorksheetFunction.Max(DemT, DispT)
With Cells(BasTabD + 7 + M, 2 + N).Interior
    .ColorIndex = 37
    .Pattern = xlSolid
End With
With Cells(BasTabD + 7 + M, 2 + N).Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    .ColorIndex = xlAutomatic
End With
'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).NumberFormat = "0" 'Afficher avec 0 décimale.
    If i = N Then
        j = j + 1
        i = 0
    End If
    i = i + 1
Next c
'Insérer la valeur optimale z* de la fonction-objectif.
Select Case (Sheets("Données").cboMaxMin.Value)
    Case "Max"
        Cells(BasTabD + 8 + M, 1) = "Profit maximal :      z*  ="
    Case "Min"
        Cells(BasTabD + 8 + M, 1) = " Coût minimal :     z*  ="
End Select
Cells(BasTabD + 8 + M, 1).Font.Bold = True
Cells(BasTabD + 8 + M, 3).Value = Range("z").Value
With Range(Cells(BasTabD + 8 + M, 1), Cells(BasTabD + 8 + M, 3))
  .RowHeight = 18
  .Interior.ColorIndex = xlNone
  .Font.Bold = True
  .Font.Name = "Arial"
  .Font.Size = 12
End With
Cells(BasTabD + 8 + M, 3).Font.ColorIndex = 3
Cells(BasTabD + 8 + M, 3).HorizontalAlignment = xlCenter
Cells(BasTabD + 8 + M, 3).Select
End Sub
Je repose ma question.
Cette macro ne fait que de la "mise en forme"
(Choix de taille de la police, de la couleur etc...)
Ce n'est pas "le coeur" du programme.
 

Staple1600

XLDnaute Barbatruc
Re

@lina_bou13
La première chose à faire pour déstresser, c'est de parler avec ton encadreur des difficultés rencontrées en étudiant ce fichier.

Pour le reste, qu'est ce que tu ne comprends pas dans la macro Resoudre ?
(Tu as été voir le lien du message#4 qui explique ce qu'est le Solveur Excel ?)
 

lina_bou13

XLDnaute Nouveau
Ouii,
donc si je comprends bien c'est le solver qui fait le boulot ici, il n'a mis aucune formule ou méthode ?
Parce qu'à première vue , j'ai cru qu'il utilisait la méthode Stepping-Stone si vous connaissez , donc je voulais savoir comment il fait pour trouver les résultats voila.
 

Discussions similaires