Extraire des données à partir d'une liste

ufernet

XLDnaute Junior
Bonjour le Forum,

Je souhaite extraire, au moyen d'une macro, les lignes d'une feuille qui sont identiques à une liste. J'ai joint un exemple. Le vrai tableau fait 2000 lignes environ et la liste 200 lignes. Dans l'exemple la feuille "Données" contient les enregistrements issus d'une base de données. La feuille "liste à extraire" comprend les matricules (colonne A) et les noms (colonnes B) que je voudrai extraire de la feuille Données avec les 4 autres colonnes. La feuille "résultat extraction" est ce que je voudrais obtenir (je l'ai fait avec copier/coller...) au moyen d'une macro c'est à dire toutes les lignes qui dans la feuille Données ont un matricule identique à celui de la feuille "liste à extraire". Pour moi c'est très clair mais j'ai bien peur que cela soit un peu obscur. Ensuite je fait un TCD pour exploiter ces données. J'ai essayé "recherchev" mais il n'y a qu'une seule cellule de rechercher.

Merci d'avance
 

Fichiers joints

Dernière édition:

kingfadhel

XLDnaute Impliqué
Re : Extraire des données à partir d'une liste

Bonsoir,

Voila un bout de code qui te permet de copier les lignes qui leurs matricules coorespondent à la liste à extraire

Code:
Sub comptage()
Dim Plage, Cel As Range
Dim Cptr1, Cptr2, lig, col As Long
Cptr1 = Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row
Set Plage = Sheets("Données").Range("$A$2:$A$" & Cptr1)
For j = 2 To Cptr1
tst = Sheets("Données").Range("A" & j)
lig = Sheets("Données").Range("A" & j).Row
col = Sheets("Données").Range("A" & j).Column
If tst <> "" Then
For i = 1 To Sheets("liste à extraire").Range("A" & Rows.Count).End(xlUp).Row
If tst = Sheets("liste à extraire").Range("A" & i) Then
Cptr2 = Sheets("FF").Range("A" & Rows.Count).End(xlUp).Row
Sheets("FF").Range("A" & Cptr2 + 1) = tst
Sheets("FF").Range("B" & Cptr2 + 1) = Cells(lig, col + 1)
Sheets("FF").Range("C" & Cptr2 + 1) = Cells(lig, col + 2)
Sheets("FF").Range("D" & Cptr2 + 1) = Cells(lig, col + 3)
Sheets("FF").Range("E" & Cptr2 + 1) = Cells(lig, col + 4)
Sheets("FF").Range("F" & Cptr2 + 1) = Cells(lig, col + 5)
End If
Next
End If
Next
pour tester j'ai créer une nouvelle feuille "FF", est c'est fonctionnel.
 

Fichiers joints

ufernet

XLDnaute Junior
Re : Extraire des données à partir d'une liste

Bonjour Kingfadhel,

J'ai testé cela marche super bien. C'est exactement ce dont j'avais besoin. Un grand merci car je ne voyais pas comment faire!

Encore Merci
 

genevieve78

XLDnaute Impliqué
Re : [Résolu] Extraire des données à partir d'une liste

Bonjour Ufernet,
Le Forum,

Pour le plaisir, en p.j.

Simplement filtrer en Feuil1 BdD, bouton en IA. Faire Clear pour revenir au tableau entier.

En Feuil2 Resultat total en TCD.

Cdt,
 

Fichiers joints

ufernet

XLDnaute Junior
Re : [Résolu] Extraire des données à partir d'une liste

Bonjour Geneviève,

Très bonne idée ta proposition, malheureusement je n'arrive pas à la faire fonctionner. Les noms et les macros ne font pas référence à la liste à extraire (liste qui va changer en nombre de ligne chaque mois) aussi quand je modifie cette liste rien ne se passe. Peut être introduire la fonction décaler dans le nom Tableau 3 puisque c'est lui qui fait partie de "listefiltre"?

Merci Kingfadhel , la macro a bien rempli toutes les colonnes de la feuille "FF" mais lorsque l'ai mis les vrais données il n'y a plus que la colonne A qui se remplit (de manière tout à fait correct) mais les colonnes B, C ,D ,E, et F ne se remplissent pas. J'ai bien regarder le code mais je ne suis pas très fort en VBA. Il me semble que dans le IF il ne passe passe pas à l'instruction:
Sheets("FF").Range("B" & Cptr2 + 1) = Cells(lig, col + 1)

Pourquoi? Je suis bien incapable de le dire...

Merci de votre travail...
 

kingfadhel

XLDnaute Impliqué
Re : [Résolu] Extraire des données à partir d'une liste

Bonjour Geneviève,

Merci Kingfadhel , la macro a bien rempli toutes les colonnes de la feuille "FF" mais lorsque l'ai mis les vrais données il n'y a plus que la colonne A qui se remplit (de manière tout à fait correct) mais les colonnes B, C ,D ,E, et F ne se remplissent pas. J'ai bien regarder le code mais je ne suis pas très fort en VBA. Il me semble que dans le IF il ne passe passe pas à l'instruction:
Sheets("FF").Range("B" & Cptr2 + 1) = Cells(lig, col + 1)

Pourquoi? Je suis bien incapable de le dire...

Merci de votre travail...
joint le fichier original avec un minimum de données et je vais voir.
 

ufernet

XLDnaute Junior
Re :Extraire des données à partir d'une liste

Bonjour Kingfadhel,

Je te joints le fichier avec une quantité de données correspondant à la réalité. J'ai lancé la Macro "Comptage" et le résultat incomplet s'est affiché dans la feuille "ff".

Merci d'avance
 

Fichiers joints

kingfadhel

XLDnaute Impliqué
Re : Extraire des données à partir d'une liste

Salut,

Voila une petite rectifivation du code.

il manquait de renseigner la feuille à partir de laquelle débute l'extraction


Sheets("FF").Range("B" & Cptr2 + 1) = Sheets("Données").Cells(lig, col + 1)

l'ancien code était fonctionnel à partir de la feuille "Données"
le nouveau de n'importe quelle feuille.

A+
Bonne reception.
 

Fichiers joints

ufernet

XLDnaute Junior
Re : Extraire des données à partir d'une liste

Bonjour,

Merci cela fonctionne. Je viens de comprendre pourquoi au milieu de mes nombreux essais une fois cela avait marché. Je devais être sur la feuille "Données".

Encore merci tu me sauves de longues heures de travail à venir....

A+
 

kingfadhel

XLDnaute Impliqué
Re : Extraire des données à partir d'une liste

Salut,

Maintenant de n'importe quelle feuille tu peux executer l'extraction sans rien craindre.

je reste à disposition pour autres améliorations, s'il y'en a.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas