Extraction en fonction de deux listes

Bonjour

Je travaille sur une extraction de données en fonction d une liste pour le boulot.

Premier onglet excel (csv) : composé de lignes dont le nombre est croissant tout au long de l année (300 000 actuellement). Sur la colonne 3, est affiché le code suppléance (données alphanumérique ou alpha seulement -> exemple : 045DKH ou FLZUXB) dont je souhaiterais que l action extraire les données se fasse en fonction du :

Deuxième onglet excel (xlsx) : une liste de codes suppléance qui m intéressent.

But : extraire, sur une nouvelle feuille, l ensemble des colonnes des lignes dont le code suppléance est trouvé dans la liste du deuxième fichier.

Contrainte : l extraction doit se faire sur une nouvelle feuille car l onglet 1 sera écrasé régulièrement par une actualisation des données.

Divers : je travaille sur Excel 2016

Tests : j ai essayé la version filtre avancé, qui me donne des erreurs (une seule ligne extraite, sur un code pas bon ...). Je pensais aussi à recherchev mais il me semble que cela doit concerner des codes uniques ce qui n est pas le cas là.

D avance, merci pour votre aide

Bonjour

Tu derais joindre ton fichier, ou au moins un extrait, anonymisé au besoin, en donnant un exemple du résultat souhaité sur un autre onglet.

Bye !

9exemple.xlsx (13.91 Ko)

Voici le fichier exemple

Un essai à tester. Te convient-il ?

6exemple-v1.xlsm (28.61 Ko)

Bye :

Bonjour à tous !

Une approche, très basique, via Power Query (nativement intégré dans Excel depuis 2016) :

Remarque : Si la base de données est un fichier CSV, une légère modification du code permettra une lecture directe du fichier.

Bonjour,

je vous remercie pour les retours.

J'étudierai ça la semaine pro.

Bonne fin de semaine et bon week end

@JFL : bon, malheureusement, il semblerait que la taille de ma bdd (150 mo) a raison de la puissance de calcul de mon pc ... merci quand même

Bonjour à tous !

@JFL : bon, malheureusement, il semblerait que la taille de ma bdd (150 mo) a raison de la puissance de calcul de mon pc ... merci quand même

Cette base de données est intégrée à votre classeur Excel ?

Power Query peut lire et retraiter une source externe. (Fichier Excel, txt, csv,....)

Effectivement non. Je la télécharge sur un sharepoint.

Les premiers pb, c'est que la BdD est brute, donc les montants sont écrits comme ceci : 32.50

est-ce que PQ peut également se charger de tout passer en € ? (bon au pire, je le ferai manuellement)

je me suis également rendu compte qu'il fallait que je fasse un deuxième filtre sur une autre colonne. Sauf que celui-ci aura toujours une même et unique occurrence donc plus simple à gérer.

Du coup, si je reprends votre fichier d'aide, comment est-ce que je peux m'y prendre svp ?

Bonjour à tous de nouveau !

Il faudrait connaître la structure de ce fichier.

Pouvez-vous, en anonymisant les données, en poster une copie (une cinquantaine de lignes) ?

Il existe dans Power Query un connecteur spécialement dédié à Sharepoint. Je ne connais pas mais on devrait pourvoir le mettre en place sans trop de difficultés.

@GMB : votre fichier est top.

j'ai essayé de le transposé comme suit :

- changement de place du bouton : de base de données vers suivi budget;

- adaptation des en-têtes de colonnes à prendre en compte :

f.Range("A1:AV1").Copy Sheets("BDD").Range("A1")

- et là, je ne comprends ce que je dois changer dans votre code pour passer du seul résultat trouvé de l'exemple à la totalité :

Option Explicit

Dim f As Worksheet, fn As Worksheet, tablo(), tabloC, tabloR()
Dim i&, ln, j&, k&, n

Sub Extraire()

    Set f = Sheets("Base de données")
    tablo = Range("A1").CurrentRegion
    tabloC = Sheets("Suivi budget").Range("A1").CurrentRegion.Resize(, 1)
    Sheets.Add After:=ActiveSheet

    On Error Resume Next
    ActiveSheet.Name = "BDD"
    If Err.Number <> 0 Then
        Application.DisplayAlerts = False
        ActiveSheet.Delete
        Sheets("BDD").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    End If

    k = 0
    For i = 2 To UBound(tablo, 1)
        For ln = 2 To UBound(tabloC, 1)
            If tablo(i, 3) = tabloC(ln, 1) Then
                ReDim Preserve tabloR(1 To UBound(tablo, 2), 1 To k + 1)
                For j = 1 To UBound(tablo, 2)
                    tabloR(j, k + 1) = tablo(i, j)
                Next j
            End If
        Next ln
    Next i
    Sheets("BDD").Range("A2").Resize(UBound(tabloR, 2), UBound(tablo, 2)) = Application.Transpose(tabloR)
    f.Range("A1:AV1").Copy Sheets("BDD").Range("A1")
    Sheets("BDD").Cells.HorizontalAlignment = xlCenter
    Sheets("BDD").Cells.EntireColumn.AutoFit
    Sheets("BDD").Activate
End Sub

Comme demandé, j'ai mis plus d'info qui ressemble à ce que j'ai concrètement.

La feuille 1 (base de données) sort sous un nom alambiqué en format .csv

3exemple.xlsx (23.19 Ko)

Bonjour à tous de nouveau !

Comme demandé, j'ai mis plus d'info qui ressemble à ce que j'ai concrètement.

La feuille 1 (base de données) sort sous un nom alambiqué en format .csv

Si la source de vos données est un fichier CSV, c'est ce fichier (sous ce format) qu'il faut joindre.

Bonjour

Nouvelle version

5exemple-v2.xlsm (32.01 Ko)

Bye !

6copie.csv (11.89 Ko)

Bonjour à tous de nouveau !

Approche Power Query adaptée à la lecture du fichier CSV.

Notes :

  1. Le nouveau tableau "Suivi budget" (tCodes) a été intégré.
  2. Les champs retenus sont ceux initialement prévus.
  3. Mettre à jour le chemin du fichier CSV (feuille "Paramètres") puis " Actualiser tout "

@JFL : y a un bug.

- j'ai changé le chemin du fichier csv;

- modifié mes codes dans suivi budget;

- actualisé tout.

bug suivant :

requetepb

je suis allé dans l'onglet requête, modifier, étapes appliquées "source" apparaît alors un bandeau jaune :

requetepb2

dois-je modifier qq chose dans l'étape source svp ?

Bonjour à tous !

A priori, c'est une simple option à modifier.

Voir l'explication ici !

@gmb : bug également

- je copie ma bd dans votre fichier/onglet base de données

- je change mes infos suivi budget

- je copie l'entête de ma bd dans l'onglet extraction (je sais pas si c'est utile)

- je clique sur extraction, ça mouline pour me donner ce résultat :

requetepb3
Rechercher des sujets similaires à "extraction fonction deux listes"