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 :

Récupération données d'un onglet à un autre (boucle)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Par défaut Récupération données d'un onglet à un autre (boucle)
    Bonjour à tous les utilisateurs developpez.net ,

    Je suis nouvelle sur le forum, et débutante en codage VBA sur Excel, mais je tiens à vous remercier car en lisant vos post j'ai pu découvrir pleins de fonctionnalités Excel ! Vous êtes TOP !

    Mais là je n'arrive pas à trouver la solution j'ai besoin de vous !

    Voici ce que je cherche à faire :

    1ère image : onglet 2 "Pilote" me servant de Synthèse
    2ème image : onglet 1 "BDD" avec toutes les données nécessaires dont j'ai besoin

    Nom : Capture2.PNG
Affichages : 119
Taille : 32,1 KoNom : Capture1.PNG
Affichages : 115
Taille : 38,5 Ko

    Pour l'instant, voici ce que j'ai fait :

    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
    Function VlookUpList(ValeurRecherchee As Range, TableDeRecherche As Range, NumColonne As Integer) As Variant
     
             Dim NbLignes As Integer
             NbLignes = TableDeRecherche.Rows.Count
             Dim CompteurValeursTrouvees As Integer
             CompteurValeursTrouvees = 0
     
              For i = 1 To NbLignes
             If TableDeRecherche(i, 1).Value = ValeurRecherchee.Value Then
             CompteurValeursTrouvees = CompteurValeursTrouvees + 1
     
                If CompteurValeursTrouvees > 1 Then
                VlookUpList = VlookUpList & "  " & TableDeRecherche(i, NumColonne).Value
                Else
                VlookUpList = TableDeRecherche(i, NumColonne).Value
                End If
     
             End If
             Next i
    End Function
    Cette formule fonctionne mais elle n'est pas vraiment adaptée il faut rajouter des choses dans ce codage (voir les commentaires dans les images), mais je n'arrive pas à trouver comment faire ! Quelqu'un pourrait m'aiguiller ?

    Merci par avance pour votre aide !!!

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Si j'ai bien compris et que tu VEUX le faire par VBA (la présente section du forum) : intéresse-toi à la méthode Range.Find (à lire dans ton aide VBA). En lui passant une référence comme valeur recherchée dans la feuille "BDD", elle te retournera la cellule trouvée (dont tu connaitras donc la ligne). Il ne te restera qu'à y lire les colonnes B et C et à les copier à la ligne en cours de ta feuille "Pilote".

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Par défaut
    Bonjour unparia,

    Merci d'avoir pris le temps de lire et de me répondre,

    Oui je souhaite passer par du codage VBA, car en réalité dans mon fichier réel il y a plus de 5200 données à aller rechercher, et ma macro s'effectuera par un bouton que j'ai déjà crée "RECUPERATION DE DONNEES", nous souhaitons avoir un outils simple d'utilisation et automatique, c'est pourquoi je fais le choix de passer par un codage VBA.

    je souhaite donc par une macro et à partir de mon onglet "Pilote" recherché tous les N° que j'ai dans ma colonne A ---> dans mon onglet "BDD" .
    Car "BDD" et une base de données me permettant d'obtenir tout ce que je cherche (info "TYPE" et info "SECTEUR".
    Cependant dans "BDD" j'ai plusieurs ligne pour un même N° (car différentes données dans TYPE et dans SECTEUR) et donc je souhaite récupérer les informations pour tous dans une même cellule qui se trouvera dans "Pilote".

    La fonction que j'ai mis dans mon premoier message fonctionne et me permet d'avoir toutes les inforamtions, cependant je pense qu'il manque un petit quelque chose pour que ce soit moins long (timing de 9min20 sec pour la récupération de toutes mes données) ! Ayant beaucoup de données, je pense que de trier en amont ma base "BDD" me permettrait un gain de temps car tous les mêmes n° seraient les uns à la suite des autres, et en intégrant un code disant à ma macro : " regarder à chaque fois la ligne en dessous si c'est le même N° de référence inscrire également les infos des colonnes dans ma cellule active en mettant un espace entre chaque infos " Si le n° juste en dessous est différent alors arrêter là et aller chercher le N° suivant.

    Je vais regarder ce que je trouve sur Range.Find pour voir si ça peut m'avancer..

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je vais regarder ce que je trouve sur Range.Find pour voir si ça peut m'avancer..
    Pardi.
    Commence ainsi, déjà (bon exrcice)
    Nous verrons ensuite comment agiliser (gagner quelques millisecondes) également la boucle de parcours (en parcourant un tableau plutôt que la plage)

Discussions similaires

  1. [XL-2007] Récupération de données d'un onglet à un autre avec deux conditions
    Par nocontrol dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2015, 11h11
  2. [XL-2003] Extractions de données d'un onglet à un autre
    Par papoucasa dans le forum Excel
    Réponses: 1
    Dernier message: 12/07/2011, 21h06
  3. Transférer des données d'un onglet à un autre
    Par sangoben dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/06/2010, 09h36
  4. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13

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