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 :

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
j'espère que c'est clair, sinon n'hésitez pas à me poser des questions