Bonsoir,

je sèche totalement et n'arrivant pas à coder ce que je veux, je fais appel à vos lumières

Tout d'abord, J'ai crée une petite application en VBA pour Excel qui me permet de comparer deux listes de références produits et qui calculs les écarts de prix, de quantité, etc... et fait ressortir également les références manquantes.

Je souhaite re-coder cette application en VB.NET et je bloque sur du code que j n'arrive pas à adapter.

Voici un bout de mon code VBA concernant la comparaison :

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
 
ligne = 1
n1 = f1.Range("A65535").End(xlUp).Row
n2 = f2.Range("A65535").End(xlUp).Row
a = f1.Range("A2:E" & n1).Value
b = f2.Range("A2:E" & n2).Value
 
Set mondico1 = CreateObject("Scripting.Dictionary")
For i = 1 To n1 - 1: mondico1.Add a(i, 1), i: Next
 
Set mondico2 = CreateObject("Scripting.Dictionary")
For i = 1 To n2 - 1: mondico2.Add b(i, 1), i: Next
 
Dim c()
n = n1 + n2
ReDim c(1 To n, 1 To 9)
 
For i = 1 To n1 - 1
      temp = a(i, 1)
      If mondico2.Exists(temp) Then
        p = mondico2.Item(temp)
        For k = 1 To 5: c(ligne, k) = a(i, k): Next k
        c(ligne, 9) = ""
 
        'Calcul ecart quantité sur un produit
        c(ligne, 6) = a(i, 3) - b(p, 3)
        If c(ligne, 6) = 0 Then c(ligne, 6) = ""
 
         'Calcul ecart PU sur un produit
        c(ligne, 7) = a(i, 4) - b(p, 4)
        If c(ligne, 7) = 0 Then c(ligne, 7) = ""
 
        'Calcul ecart Montant sur un produit
        c(ligne, 8) = a(i, 5) - b(p, 5)
        If c(ligne, 8) = 0 Then c(ligne, 8) = ""
 
        'Si produit trouvé et écart -> indicateur en orange
        If b(p, 3) - a(i, 3) <> 0 Or b(p, 4) - a(i, 4) <> 0 Or b(p, 5) - a(i, 5) <> 0 Then
        f3.Range("I" & ligne + 1).Font.ColorIndex = 45
        c(ligne, 9) = "Ecart"
 
        ligne = ligne + 1
      End If
    Next i
Je n'arrive pas à retranscrire ce code en .NET
J'essais de passer par par une collection de type Dictionnaire (cf le cours vb.net http://plasserre.developpez.com/cour...age-vb3#LV-I-6, mais je n'y arrive pas

Avez-vous une petite idée?

Merci pour votre aide.