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
| '=============================================================='
' TRAITEMENT DU CLASSEMENT DE PARETO '
'=============================================================='
Public Sub classementPareto(c1 As Range, c2 As Range, c3 As Range, c4 As Range)
'méthode de classement des k-ièmes valeurs avec gestion des doublons, c1/2/3/4 sont des cellules d'en-tête
'c1 c2 => tableau de valeur source, c3 => valeurs classées avec la fonction GRANDE.VALEUR, c4 => en attente d'écriture
Dim tabV(2, 21) As Integer
Dim tabChk(5) As Integer
Dim tabRes(5) As Integer
Dim rang As Integer
Dim src As Integer
Dim valTampon As Integer
'remplissage des différents tableaux
'==============================
For i = 0 To 21
tabV(0, i) = c1.Value
tabV(1, i) = c2.Value
Set c1 = c1.Offset(1, 0)
Set c2 = c2.Offset(1, 0)
'Debug.Print tabV(0, i), tabV(1, i)
Next i
For j = 0 To 4
tabChk(j) = c4.Value
Set c4 = c4.Offset(1, 0)
Next j
'remplissage du tableau Resultat, comparaison à la valeur précédente, ériture dans la cellule
'==============================
For j = 0 To 4
src = tabChk(j)
rang = Main.existenceTab(src, tabV)
valTampon = tabV(0, rang)
tabRes(j) = valTampon
If j > 0 Then
While tabRes(j - 1) = valTampon
tabV(1, rang) = -1
rang = Main.existenceTab(src, tabV)
'Debug.Print "recherche : " & src, " rang : " & rang
valTampon = tabV(0, rang)
Wend
End If
tabRes(j) = valTampon
c3.Value = valTampon
Set c3 = c3.Offset(1, 0)
Next j
End Sub
Public Function existenceTab(Val As Integer, tablo() As Integer) As Integer
'recherche une valeur dans un tableau de valeur, si existence renvoie son rang, sinon -1
existenceTab = -1
For i = 0 To 21
If tablo(1, i) = Val Then existenceTab = i
Next i
End Function |
Partager