BONJOUR,
mon code distribue les permanences du samedi en fonction des disponibilités à travers un tirage aléatoire; je veux changer le tirage aléa par un tirage en fonction de la moyenne la plus basse d'équipe (ville=équipe);
j'ai créé 3 dictionnaires pour stocker :
- la liste des employés dispo par ville
- la liste des Nombres Permanences effectuées par les employés dispo par ville
- la moyenne Nombres Permanences effectués par ville
je cherche à trier le tableau tabville selon les valeurs de la moyenne (moyenne par ville, 6 moyennes au total que j'ai stocké dans un dictionnaire)
' but : boucler sur les 3 1ère villes qui ont la moyenne la plus basse
' Puis dans la boucle "For i = 1 To 3" if i = 1 Alors sélectionner les 3 employés qui ont le moins de perm, if i > 1 alors sélectionner les 2 employés qui ont le moins de perm
j'ai un code que je veux adapter à ma situation sachant que j'utilise des dictionnaire et non pas des tableaux :
voilà le code :
j'espère que c'est clair, sinon n'hésitez pas à me poser des questions
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 Sub getAvgs() Dim origArray(1 To 9, 1 To 2) Dim varData, rowCounter As Long, averager As Double For i = 1 To 9 origArray(i, 1) = Sheet1.Range("A" & i + 1).Value origArray(i, 2) = Sheet1.Range("B" & i + 1).Value Next i varData = [{1, 2, 6; 9, 5, 7; 4, 8, 3}] rowCounter = 3 Columns("G:G").Select Selection.NumberFormat = "0.00000" Columns("E:G").ColumnWidth = 12 Sheet1.Range("E1").Value = "Name" Sheet1.Range("F1").Value = "Value" Sheet1.Range("G1").Value = "Average" For i = 1 To 3 For f = 1 To 3 Sheet1.Range("E" & rowCounter).Value = origArray(varData(f, i), 1) Sheet1.Range("F" & rowCounter).Value = origArray(varData(f, i), 2) averager = averager + origArray(varData(1, f), 2) rowCounter = rowCounter + 1 Next f Sheet1.Range("G" & rowCounter - 3).Value = averager / 3 averager = 0 rowCounter = rowCounter + 1 Next i End Sub![]()
Partager