Extraire des données à partir d'une liste

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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

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...
 
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.
 
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

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

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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
285
Réponses
16
Affichages
249
Réponses
4
Affichages
107
Retour