Bonjour à tous,
j'ai découvert dernièrement les variables tableaux (je suis autodidacte sur vba), j'ai lu pas mal de choses, récupéré des bouts de codes (merci à ceux qui les ont écris) par ici ou par là, mais je butte actuellement sur un point.
Je pensais avoir terminé mon développement mais je me suis rendu compte qu'un calcul que j'effectuais était faux car mes données n'étaient pas triées par ordre croissant.
Pour le cheminement :
1 j'ouvre dans la mémoire du pc un fichier txt
2 je récupère les lignes dans un tableau
3 je découpe, split, scinde (comme vous voulez) les données avec le séparateur ;
4 je récupère ces données dans un dico et un tableau via ce bout de code :
Objectif :
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 For Z = 2 To UBound(TblRecup) 'découpe la ligne en fonction du séparateur ; tblsplit = Split(TblRecup(Z), ";") 'si la valeur de la 1 ère colonne n'existe pas l'inscrit dans le dico et récupère les valeurs If Dico.Exists(tblsplit(2)) = False Then comp = 1 Dico.Add tblsplit(2), tblsplit(8) j = j + 1 ReDim Preserve tbl(1 To 10, 1 To j) tbl(1, j) = tblsplit(2) tbl(2, j) = tblsplit(8) Tbl(3, j) = Val(tblsplit(21)) *5 tbl(4, j) = tblsplit(49) tbl(5, j) = tblsplit(50) tbl(6, j) = tblsplit(51) tbl(7, j) = comp Else 'comme la valeur de la 1 ère colonne existe, on compte le nb de doublons et effectue la somme afin de faire la moyenne comp = comp + 1 'permet de faire la moyenne tbl(3, j) = (Val(tblsplit(21) *5 + Val(tbl(3, j)) Voilà où se situe le problème. Comme les données récupérées par tbl(1, j) = tblsplit(2) ne sont pas tirées par ordre croissant la ligne de code ci dessus ajoute la valeur à un autre événement cf exemple en bleu :calim2: tbl(7, j) = comp End If Next Z
Par quel moyen je peux trier par ordre croissant la colonne 1 (et conserver toutes les données des autres colonnes) sans la nécessité d'écrire les valeurs dans excel, les trier, puis les relire dans une variable tableau, effectuer le calcul *5 et la moyenne? C'est peut être pas très clairmais voici simplement illustré le problème
exemple en mémoire dans la variable
Résultat obtenu par mon codeA 15 z A 17 z A 18 z B 10 r B 10 r A 19 z C 20 r C 21 r
Résultat désiréA 16.66 z B 13 r 10+10+19 (Comme A existe il ajoute la quatrième valeur de A (A= 19) aux valeurs de B) C 20.5 r
A 17.25 z B 10 r C 20.5 r
Merci par avance de votre précieuse aide.
Bonne journée
Partager