Bonjour, voici mon premier message sur le site parce que je n'arrive pas à m'en sortir avec ces quelques lignes de codes, malgré toutes mes recherches... Merci par avance pour votre support!

J'essaie d'utiliser le code disponible ici : http://boisgontierjacques.free.fr/fi...000Lignes.xlsm pour réaliser une recherche matricielle entre 1 base de plus de 65000 lignes et plusieurs feuilles de plusieurs milliers de lignes que je souhaite importer une par une.

Or, à chaque import, toutes les cellules du champ résultat qui n'ont pas de clé correspondante dans la table source sont écrasées. J'aimerais conserver les données précédemment importées et donc que le code ignore les cellules non vides.

Sauriez-vous où insérer cette condition?
Merci!

Voici le code:

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
 
Sub AppelSub()
  Set TableSource = Range("A2:B1200") ' champ table source
  Set ClésCherchées = Range("I2:I68000") ' champ des clés recherchées
  Set Résultat = Range("J2:J68000") ' champ résultat
  colResult = 2
  Rechv ClésCherchées, TableSource, 2, Résultat
End Sub
 
Sub Rechv(ClésCherchées, TableSource, colRésult, Résultat)
  Application.ScreenUpdating = False
  Set d = CreateObject("Scripting.Dictionary")
  a = TableSource.Value ' table source
  b = ClésCherchées.Value ' table des clés recherchées
  For i = LBound(a) To UBound(a)
    d(a(i, 1)) = a(i, colRésult)
  Next i
  Dim temp()
  ReDim temp(LBound(b) To UBound(b), 1 To 1)
  For i = LBound(b) To UBound(b)
    If d(b(i, 1)) <> "" Then temp(i, 1) = d(b(i, 1)) Else temp(i, 1) = ""
  Next i
  Résultat.Value = temp
End Sub