Bonjour à tous

Je fais un rechercheV un peu amélioré en vba.
J'ai un fichier adr qui comprend des milliers de lignes d'adresse.
J'ai un fichier rep qui répertorie toutes les rues et désigne un secteur a chacune.
L'objectif est d'assigner à chaque adresse du fichier adr le secteur auquel il correspond. Comme le fichier adr est sale je dois chercher dans l'adresse une expression et non pas l'ensemble d'une chaine de caractère pour assigner le secteur (d'où l'usage du mid et du instr). Le problème est que, comme le fichier est volumineux, je veux utiliser une variable dictionnaire et que ça n'a pas l'aire de marcher ensemble ... (erreur 13 : incompatibilité de type)

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
 
Sub recherchexxx() ' avec for each
Dim rep_d(), adr, rep, dico, i&, j&, k%, nbl_r&, nbl_a&, temp, adr_b(), c
Set dico = CreateObject("Scripting.Dictionary")
rep = Range("O2:V" & [a65000].End(xlUp).Row).Value
adr = Range("D2:G" & [a65000].End(xlUp).Row).Value
nbl_r = Range("O1").End(xlDown).Row
nbl_a = Range("E1").End(xlDown).Row
For i = LBound(rep) To UBound(rep)
dico(rep(i, 4)) = Array(rep(i, 6))
Next i
ReDim adr_b(nbl_a - 1)
ReDim Preserve adr(1 To nbl_a - 1, 1 To 5)
For j = LBound(adr) To UBound(adr)
For Each c In dico.Keys
adr_b(j) = adr(j, 3)
adr(j, 5) = dico(Mid(adr_b(j), InStr(adr_b(j), c), Len(c)))
Range("H" & j + 1) = adr(j, 5)
Next c
Next j
End Sub
Quelqu'un a une solution ?