Bonjour,

J'ai trouver un code sur ce site http://boisgontierjacques.free.fr/pa...re.htm#MergeMZ qui permet de fusioner deux tableaux en utilisant un dictionnaire, je travaille sur l'adaptation de ce code pour résoudre mon problème et j'aurais bien besoin d'un coup de main.
L'exemple qui va avec ce code contient deux tableaux simple avec une colonne ID et une colonne VALEUR.
J'ai déjà réussi a adapter pour avoir plusieurs colonnes valeurs différentes et avoir plus que deux tableaux.
Le dernier problème qu'il me reste c'est pour la colonne contenant l'identifiant, j'aurais aimé utilisé plusieurs cellules pour identifier un element,pour l'instant je concactène toute mes colonnes et je fais l'opération inverse une fois la fusion finie, mais j'aurais aimé savoir si il était possible de se passer de cette étape.
Voici le code en question:
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
Sub fusion()
   Set d1 = CreateObject("Scripting.Dictionary")
   Set f1 = Sheets("ca2014")
   a = f1.Range("A2:B" & f1.[a65000].End(xlUp).Row)
   Set f2 = Sheets("ca2015")
   b = f2.Range("A2:B" & f2.[a65000].End(xlUp).Row)
   n = UBound(a) + UBound(b)
   Dim c: ReDim c(1 To n, 1 To 3)
   m = 0
   For i = LBound(a) To UBound(a)
     If Not d1.exists(a(i, 1)) Then m = m + 1: d1(a(i, 1)) = m: p = m Else p = d1(a(i, 1))
     c(p, 1) = a(i, 1): c(p, 2) = a(i, 2)
   Next i
   For i = LBound(b) To UBound(b)
     If Not d1.exists(b(i, 1)) Then m = m + 1: d1(b(i, 1)) = m: p = m Else p = d1(b(i, 1))
     c(p, 1) = b(i, 1): c(p, 3) = b(i, 2)
   Next i
   Sheets("fusion").[A2].Resize(d1.Count, UBound(c, 2)) = c
 End Sub
Mon problème se situe je pense au niveau du If Not d1.exists(a(i, 1)) que j'aimerais adapter pour prendre plusieurs cellules.

J'espère avoir été assez clair, merci d'avance à ceux qui essayeront de m'aider.