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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
Sub MaxiMini()
Dim Dico As Object
Dim Cle As Variant
Dim TblRecup()
Dim TblMaxMin()
Dim TblSplit
Dim I As Integer
Dim J As Integer
'adapter le chemin et nom du fichier texte
Open "Mon Fichier Texte.txt" For Input As #1
Do While Not EOF(1)
I = I + 1
ReDim Preserve TblRecup(1 To I)
'récupère la ligne entière dans le tableau
Line Input #1, TblRecup(I)
Loop
Close #1
'utilise un dictonnaire pour avoir la des valeurs uniques
'de la 1 ère colonne
Set Dico = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(TblRecup)
'splite la ligne
TblSplit = Split(TblRecup(I), " ")
'si la valeur de la 1 ère colonne n'existe pas
'l'inscrit dans le dico et récupère les valeurs
'à comparer dans les 4 autres "cellules" du tableau
If Dico.exists(TblSplit(0)) = False Then
Dico.Add TblSplit(0), TblSplit(0)
J = J + 1
ReDim Preserve TblMaxMin(1 To 5, 1 To J)
TblMaxMin(1, J) = TblSplit(0)
TblMaxMin(2, J) = TblSplit(1)
TblMaxMin(3, J) = TblSplit(1)
TblMaxMin(4, J) = TblSplit(2)
TblMaxMin(5, J) = TblSplit(2)
Else
'comme la valeur de la 1 ère colonne existe
'effectue une comparaison pour récupérer les
'valeurs mini et maxi de chaque colonne
If TblSplit(1) > TblMaxMin(2, J) Then
TblMaxMin(2, J) = TblSplit(1)
End If
If TblSplit(1) <= TblMaxMin(3, J) Then
TblMaxMin(3, J) = TblSplit(1)
End If
If TblSplit(2) > TblMaxMin(4, J) Then
TblMaxMin(4, J) = TblSplit(2)
End If
If TblSplit(2) <= TblMaxMin(5, J) Then
TblMaxMin(5, J) = TblSplit(2)
End If
End If
Next I
'récup des résultats dans la feuille active
'à partir de A1
[A1] = "Col 1"
[B1] = "Max Col 2"
[C1] = "Min Col 2"
[D1] = "Max Col 3"
[E1] = "Min Col 3"
For I = 1 To UBound(TblMaxMin, 2)
Range("A" & I + 1) = TblMaxMin(1, I)
Range("B" & I + 1) = TblMaxMin(2, I)
Range("C" & I + 1) = TblMaxMin(3, I)
Range("D" & I + 1) = TblMaxMin(4, I)
Range("E" & I + 1) = TblMaxMin(5, I)
Next I
End Sub |
Partager