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
 

Pièces jointes

  • Stage.xlsx
    17.1 KB · Affichages: 73
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.
 

Pièces jointes

  • Stage.xlsm
    25.2 KB · Affichages: 80
  • Stage.xlsm
    25.2 KB · Affichages: 88
  • Stage.xlsm
    25.2 KB · Affichages: 93

Gen Rose

XLDnaute Impliqué
Supporter XLD
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,
 

Pièces jointes

  • Stage_Ufernet.xlsm
    32.1 KB · Affichages: 77

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
 

Pièces jointes

  • Stage.xlsm
    339.5 KB · Affichages: 65
  • Stage.xlsm
    339.5 KB · Affichages: 77
  • Stage.xlsm
    339.5 KB · Affichages: 82

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.
 

Pièces jointes

  • Stage(1).xlsm
    328.3 KB · Affichages: 62

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+
 

Discussions similaires

Statistiques des forums

Discussions
311 705
Messages
2 081 733
Membres
101 807
dernier inscrit
foued