Bonjour,
Je dois créer un tableau de 9 Colonnes (n22, x22, n42, x42, n23, x23, n43, x43, A). voici le lien: http://cjoint.com/?ebjlVRYKXv
Ces nombres sont variables.
Les "n" varient de 0 à Z (ici Z=3, on peut changer ce nb et il corrspond au nombre maxis de tours par camion et par jour).
Les "x" varient de 0 à X (ici X=4, il correspond au nombre de camions maxi par jour).
A=n22*x22*8 + n42*x42*8 + n23*x23*10 + n43*x43*10.
Ils doivent vérifier la condition suivante:
Aa< A <= Ab
avec Ab le rendement maxi par jour (ici =100)
et Aa le rendement mini par jour (=Ab-6).
J'ai imposé une deuxième condition:
on supprime la ligne si:
n22 ou x22 =0
et/ou n42 ou x42= 0
et/ou n23 ou x23=0
et/ou n43 ou x43=0.
Mais j'ai encore énormément de combinaisons possibles.
Donc j'impose une nouvelle condition qui concerne les temps de rotation de mes camions.
J'associe T22 à n22 et x22 (ici =1,2722)
T42 à n42 et x42 (=2,175)
T23 à n23 et x43 (=1,3722)
T43 à n43 et x43 (=2,275)
Voici la macro:
Je pose Y, Y doit prendre les valeurs de x22 et X42 et celles qui sont comprises entre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
65
66
67
68
69
70
71 Sub combinaison() [A7.I65536].ClearContents Dim n22 As Integer, x22 As Integer, n42 As Integer, x42 As Integer, n23 As Integer, x23 As Integer, n43 As Integer, x43 As Integer, Z As Integer, X As Integer, A As Integer, Aa As Integer, Ab As Integer Dim T22 As Single, T42 As Single, T23 As Single, T43 As Single, MAX As Integer, MIN As Integer, Y As Integer, W As Integer Dim Ligne As Long Z = [A1] X = [F1] Aa = [A3] Ab = [F3] T22 = [J1] T42 = [L1] T23 = [J3] T43 = [L3] MAX = [N1] MIN = [N3] Ligne = 7 For n22 = 0 To Z For x22 = 0 To X For n42 = 0 To Z For x42 = 0 To X For n23 = 0 To Z For x23 = 0 To X For n43 = 0 To Z For x43 = 0 To X A = n22 * x22 * 8 + n42 * x42 * 8 + n23 * x23 * 10 + n43 * x43 * 10 If n22 = 0 Xor x22 = 0 Then A = 0 If n42 = 0 Xor x42 = 0 Then A = 0 If n23 = 0 Xor x23 = 0 Then A = 0 If n43 = 0 Xor x43 = 0 Then A = 0 If Aa < A And A <= Ab Then Cells(Ligne, 1).Value = n22 Cells(Ligne, 2).Value = x22 Cells(Ligne, 3).Value = n42 Cells(Ligne, 4).Value = x42 Cells(Ligne, 5).Value = n23 Cells(Ligne, 6).Value = x23 Cells(Ligne, 7).Value = n43 Cells(Ligne, 8).Value = x43 Cells(Ligne, 9).Value = A For Y = x22 To x42 For W = x23 To x43 If MIN * Y <= n22 * T22 * x22 + n42 * x42 * T42 And n22 * T22 * x22 + n42 * x42 * T42 <= MAX * Y Xor MIN * W <= n23 * T23 * x23 + n43 * T43 * x43 And n23 * x23 * T23 + n43 * x43 * T43 <= MAX * W Then Ligne = Ligne + 1 End If Next Next Next Next Next Next Next Next Next Next End Sub
W doit prendre les valeurs de x23 et x43 et celles comprises entre.
MIN correspond à la durée minimale de travail par jour (ici 6h)
MAX à la durée maxi par jour (ici 7h).
Ils doivent vérifier:
MIN * Y <= n22 * T22 * x22 + n42 * x42 * T42<= MAX * Y ET/OU MIN * W <= n23 * T23 * x23 + n43 * T43 * x43<= MAX * W
En l'écrivant comme je l'ai fait j'ai droit à erreur de compilation: next sans for.
J'ai essayé d'autres façons, ça m'a mis if sans end if
si quelqu'un a une idée, elle sera la bienvenue
Partager