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)
Quelqu'un a une solution ?
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
Partager