IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Methode de rapatriement de données [XL-2013]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Par défaut 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 : 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
    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
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/07/2008, 11h47
  2. Rapatrier des données au même niveau
    Par Darcynette dans le forum SQL
    Réponses: 2
    Dernier message: 09/06/2008, 14h14
  3. [Debutant] Methodes de persistance des données ?
    Par Hesiode dans le forum Persistance des données
    Réponses: 3
    Dernier message: 22/01/2008, 09h48
  4. Rapatrier des données
    Par ANTMA dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 19/12/2007, 14h15
  5. Réponses: 2
    Dernier message: 20/11/2006, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo