1 pièce(s) jointe(s)
Methode de rapatriement de données
Bonjour à tous,
Je viens solliciter votre aide pour un projet sur lequel je travaille. Sous VBA, je cherche à importer des données provenant d'un autre classeur ou d'une autre feuille en fonction d'un code unique.
J'ai essayé plusieurs manières mais elle sont très longues.. (j'ai d'un côté, une base d'environ 30.000 lignes et 7 colonnes et de l'autre, 2000 codes pour lesquels je dois rechercher les informations dans la base et importer les données).
J'ai tenté une boucle "for each"; la fonction recherche etc.. jusqu’à trouver sur Internet un petit code très bien qui fait appelle à la création d'un objet "dictionary". Celui ci fonctionne très bien mais en l'adaptant à mes besoins (càd, sur beaucoup de ligne) l'exécution prends énormément de temps..
Voici le code que j'utilise :
Code:
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
| Sub RechercheCodes()
Set f = Worksheets("Resultat")
nbligne = 2
Do Until f.Cells(nbligne, 1) = ""
moncode = f.Cells(nbligne, 1).Value
On Error Resume Next
Set mondico = CreateObject("scripting.dictionary")
a = Worksheets("Base").[A2:D29902]
For i = 1 To 29902
mondico(a(i, 1)) = i
Next i
ligne = mondico(moncode)
b = Application.Index(a, ligne)
f.Cells(nbligne, 2).Value = b(2)
f.Cells(nbligne, 3).Value = b(3)
f.Cells(nbligne, 4).Value = b(4)
nbligne = nbligne + 1
Loop
End Sub |
Il y a peut-être quelque chose que je fais mal.. L'idée globale est de scanner une liste de codes, puis rechercher ces codes dans un(e) autre page/classeur et rapatrier les colonnes B,C et D de la feuille "Base" vers la ligne du code recherché de la page "Résultat".
En PJ un exemple sous excel qui contient le code VBA ci-dessus.
Je suis preneur de tous les avis ou autre méthode plus performante.
Merci à tous et très bon weekend :P