Bonjour
J'ai actuellement un tableau de 15000x43 dans lequel je dois regrouper des sommes en fonction d'un String (qui est chez moi un fournisseur).
J'ai essayé de produire quelques algorithmes dont voici les codes, mais en vba :
Code vba : 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 Sub test() '9 correspond à la colonne du fournisseur '29 à leur prix Dim continuer As Boolean Dim x As Integer c = 1 position = 0 ReDim tab_four(c) 'parcourt la liste de fournisseurs For i = 2 To UBound(tab_val, 2) 'si le fournisseur selectionné est différent du suivant If tab_val(i, 9) <> tab_val(i + 1, 9) Then 'on vérifie qu'il n'est pas dans le tableau For x = 0 To UBound(tab_four) If tab_val(i, 9) = tab_four(x) Then continuer = False 'somme d'un fournisseur tab_somme(x) = tab_somme(x) + tab_val(i, 29) Else: tab_four(x) = tab_val(i, 9) tab_somme(x) = tab_somme(x) + tab_val(i, 29) End If Next x 'redimensionnement du tableau ReDim Preserve tab_four(x) End If Next i
Le problème avec celui ci étant qu'au fur et a mesure qu'on sélectionne un fournisseur, les sommes s'additionnent n'importe comment
Le second est encore moins bon :
Code vba : 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
36
37
38
39
40
41
42
43
44
45
46
47
48 Sub Calcul_TTC() Dim x As Variant Dim u As Variant Dim test As Boolean x = 0 u = 0 'Deux problèmes dans cet algo : 'Si élément déjà dans une tab_four alors addition ne se fera jamaiss 'Si élément pas pareil que celui à la position i il s'ajoutera plusieurs fois dans le tableau 'parcourt tous les éléments de la colonne For i = 0 To UBound(tab_val, 2) test = False 'ReDim Preserve tab_four() 'verifie si un élément n'est pas déjà dans le tableau For Z = 0 To UBound(tab_four, 1) If tab_val(i, 9) = tab_four(Z) Then test = False End If Next Z If test = True Then 'Si élément pas encore dans le tableau 'Si élément différent de celui d'après alors on l'ajoute dans le tableau For l = 2 To UBound(tab_val) If tab_val(i, 9) <> tab_val(u, 9) Then tab_four(x) = tab_val(u, 9) x = x + 1 u = u + 1 Else tab_somme(i) = tab_somme(i) + tab_val(u, 29) End If Next l End If Next i 'affichage Cells(6, 6) = somme Cells(4, 6) = "Somme de tous les fournisseurs : " End Sub 'Marche pas, trop d'erreurs
Donc si vous avez des idées, n'hésitez pas à partager quel que soit le langage ou comment vous l'exprimez
Cordialement
Partager