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
| Sub DistVisibADCAD2(FeuilleActive As String)
Dim NbLignes As Long
Range("E50").Select
Range(Selection, Selection.End(xlDown)).Select
NbLignes = Selection.Rows.Count
Range("AM50").Select
Dim count1 As Integer
count1 = 1
While count1 < NbLignes + 1
Selection.Formula = Selection.Offset(0, -1).Formula
Select Case Selection.Offset(0, -1).Value
Case -2
Selection.Value = ""
Selection.Offset(1, 0).Select
count1 = count1 + 1
Case -1
Selection.Value = "X"
Selection.Offset(1, 0).Select
count1 = count1 + 1
Case Else
Dim CelluleCible As String, CelluleVariable As String, TypeOpti As Integer, CelluleContr(4) As String, RelaContr(4) As Integer, ValContr(4) As String
CelluleCible = "$" & Left$(Selection.Address(0, 0), (Selection.Column < 27) + 2) & "$" & Selection.Row
CelluleVariable = "$" & Left$(Selection.Offset(0, -6).Address(0, 0), (Selection.Offset(0, -6).Column < 27) + 2) & "$" & Selection.Offset(0, -6).Row
TypeOpti = 2
CelluleContr(1) = CelluleVariable
CelluleContr(2) = CelluleVariable
CelluleContr(3) = "$" & Left$(Selection.Offset(0, -5).Address(0, 0), (Selection.Offset(0, -5).Column < 27) + 2) & "$" & Selection.Offset(0, -5).Row
CelluleContr(4) = "$" & Left$(Selection.Offset(0, -3).Address(0, 0), (Selection.Offset(0, -3).Column < 27) + 2) & "$" & Selection.Offset(0, -3).Row
RelaContr(1) = 1
RelaContr(2) = 3
RelaContr(3) = 1
RelaContr(4) = 1
ValContr(1) = "$" & Left$(Selection.Offset(0, -7).Address(0, 0), (Selection.Offset(0, -7).Column < 27) + 2) & "$" & Selection.Offset(0, -7).Row
ValContr(2) = "$" & Left$(Selection.Offset(0, -8).Address(0, 0), (Selection.Offset(0, -8).Column < 27) + 2) & "$" & Selection.Offset(0, -8).Row
ValContr(3) = "$" & Left$(Selection.Offset(0, -32).Address(0, 0), (Selection.Offset(0, -32).Column < 27) + 2) & "$" & Selection.Offset(0, -32).Row
ValContr(4) = "$" & Left$(Selection.Offset(0, -31).Address(0, 0), (Selection.Offset(0, -31).Column < 27) + 2) & "$" & Selection.Offset(0, -31).Row
Call Optimiser(CelluleCible, CelluleVariable, TypeOpti, CelluleContr, RelaContr, ValContr)
Application.DisplayAlerts = False
If Selection.Offset(0, -2) <> 1 Then
Selection.Value = "X"
End If
Selection.Offset(1, 0).Select
count1 = count1 + 1
End Select
Wend
End Sub
Sub Optimiser(CelluleCible As String, CelluleVariable As String, TypeOpti As Integer, CelluleContr() As String, RelaContr() As Integer, ValContr() As String)
SolverReset
SolverOk SetCell:=CelluleCible, MaxMinVal:=TypeOpti, ValueOf:="0", ByChange:=CelluleVariable
Dim NbContr As Integer, i As Integer
NbContr = UBound(CelluleContr, 1)
If NbContr > 0 Then
For i = 1 To NbContr
SolverAdd CellRef:=CelluleContr(i), Relation:=RelaContr(i), FormulaText:=ValContr(i)
Next i
End If
SolverSolve
End Sub |
Partager