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) ThenMsgBox (blabla)End If Next End If Next
Partager