Fonction INDEX et variable tableau pour condition
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:
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 |