Bonjour,

Je me tourne vers vous car je suis dans une impasse.
J'ai une macro pour un fichier excel à 2 feuilles 1 (base) : les références que l'on veut acheter 2 : les retours de cotations
avec la macro je crée une 3éme feuille qui doit indiquer quelles sont les meilleurs retours.

Ma macro est focntionnelle, mais aujoud'hui je souhaite optimiser le code et surtout la rendre flexible au nombre de quantité à acheter par référence (le produit n'étant pas un yaourt, la ref et sa qualité sont uniques).
Pour ce faire, je crée un tableau qui va intégrer le nombre de piece de la même reference que nous voulons. Mais lors de la comparaison finale, j'ai une incompatibilité de type et je n'arrive pas à déterminer sa provenance.
Je tiens à préciser que les valeurs a,b,c,refdonnée produisent la même erreur en variant ou autre.
Personnellement je pense que cela viens de la fonction INDEX qui doit être repris dans une autre fonction mais je ne vois pas laquelle.
J'ai cherché sur divers cas, mais je ne suis pas sur de comprendre toutes les réponses.
En vous remerciant par avance.

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
36
37
38
39
40
41
42
43
44
45
Dim i As Integer
Dim refdonnée() As String
Dim a As Integer
Dim b As String
Dim c As Integer
Dim match As Integer

'Nombre est une variable défini plus haut en entier
i = nombre - 1
ReDim refdonnée(0 To i, 0 To 0, 0 To 0)
lignecompteur = 3
a = 0

For Each vale In base.Rows
    If vale.Cells(1, 1) <> "Référence recherchée" Then
        If vale.Cells(1, 1) <> vale.Cells(1 - 1, 1) Then
            For a = a To UBound(refdonnée, 1) 'boucle sur la 1ere dimension
                For Each NBR In base.Rows
                    If NBR.Cells(1, 1) = vale.Cells(1, 1).Value Then
                    match = match + 1
                    End If
                Next
            a = a
            c = match
            b = vale.Cells(1, 1)
            refdonnée(a, 0, 0) = a & b & c
            a = a + 1
            Exit For
            Next a
        End If
    End If
match = 0
Next


H = refdonnée()
For Each vale In base.Rows
    If vale.Cells(1, 1) <> "Référence recherchée" Then
        For a = 0 To i
            If vale.Cells(1, 1) = Application.WorksheetFunction.Index(refdonnée, 0, 2) Then            
MsgBox (blabla)
End If Next End If Next