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