Filtre sur 2 feuilles Excel

Bonjour ,

Je veux effectuer les opérations suivantes

appliquer les filtres suivants

Signature=2;Signet=G12 and G15 ; les Code= contenant 7 et 23 ;

et ensuite il me faut récupérer le Montant correspondant des données restantes apres filtrage

Il me faut donc naviguer entre les 2 fichiers .

J'ai mis en pièce jointe des données que j'ai crées pour faciliter la compréhension .Mes données réels sont plus de 5000 .Comment faire facilement cette naviguation d'un fichier à l'autre .

Une aide me serait vraiment précieuse .

12donnee-test.xlsx (10.22 Ko)

Cordialement ,

Bonjour,

Besoin de précisions:

-Les dispositions des tableaux réels sont-elles les mêmes, est-ce que ID est en Colonne C pour chacun des 2 tableaux?

-Les tableaux réels commencent sur quelles lignes (entêtes comprises)?

-Après avoir filtrer par "Signature " dans "fichier1", et après avoir filtré sur "Signet" et "Code" dans "fichier 2", il ne reste que "ID" qui est commun aux 2 feuilles, et c'est à partir de cet élément restant que l'on doit récupérer les montants, c'est bien ça?

Exemple, si on applique les filtres tels que demandé, on ne récupèrerait que le montant de L'ID 3, soit 456, c'est bien ça?

Cdlt

Bonjour ,

Merci pour ton retour

Mes tableau réels commence sur la ligne 13

Dans les tableaux réels la colonne commune ID n'a pas Ia même disposition .

Sur ma première feuille l'ID est en colonne C et sur la seconde en colonne B

Ensuite pour cette question

<<

Après avoir filtrer par "Signature " dans "fichier1", et après avoir filtré sur "Signet" et "Code" dans "fichier 2", il ne reste que "ID" qui est commun aux 2 feuilles, et c'est à partir de cet élément restant que l'on doit récupérer les montants, c'est bien ça?

Exemple, si on applique les filtres tels que demandé, on ne récupèrerait que le montant de L'ID 3, soit 456, c'est bien ça?

>>

Oui c'est exactement 456 qu'on récupère comme montant .

Cdlt

Bonjour,

Voici le fichier

,Cdlt

Merci pour ton retour,

Je vais le tester sur les données réels .

Criteria1:="=*7", Operator:=xlOr, Criteria2:="=*23"

cette partie c'est pour filtrer sur tout ce qui contient les numéro 7 ou 23 ,c'est cela ?

Cdlt

Criteria1:="=*7", Operator:=xlOr, Criteria2:="=*23"

[s=co-548dd4][/s]

cette partie c'est pour filtrer sur tout ce qui contient les numéro 7 ou 23 ,c'est cela ?

OUI

Merci pour ton retour ,super !

Cordialement ,

Bonjour ,

Je reviens après avoir adapté ta réponse .

Cette partie du code je ne la comprend pas

 NbVal = f2.Range("_FilterDataBase").Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1

    Set d1 = CreateObject("Scripting.dictionary")
    For i = 14 To DerLig_f2
        If f2.Rows(i).Height <> 0 Then
            d1(CStr(f2.Range("C" & i).Value)) = ""
        End If
    Next

    f1.Range("B13:F" & DerLig_f1).AutoFilter Field:=1, Criteria1:=d1.keys, Operator:=xlFilterValues

Sur mes fichiers réels il n'y a que le premier filtre qui fonctionne .

Cordialement ,

Bonjour,

Sur vos fichiers réels, les emplacements sont -ils rigoureusement les mêmes? sinon avez-vous bien adapté le code en fonction de l 'emplacement des tableaux?

Quant au fonctionnement:

- on applique un premier filtre sur la signature dans le fichier 1, donc toutes les lignes qui ne correspondent pas à la signature "2" sont masquées.

- ensuite, on applique un filtre sur les signets et les codes du fichier 2, donc toutes les lignes avec les signets qui ne correspondent pas à "G12" et "G15"sont masquées, et un deuxième filtre sur les codes qui ne conserve que les lignes dont le code contient 7 ou 23.

Comme on ignore combien d'ID on va trouver, ni lesquels, alors on va créer un liste de ces ID en mémoire et on appliquera cette liste au filtre du fichier1.

- comment on procède: on revient sur le fichier 1, on passe sur toutes les lignes de la colonne des "ID", et on met en mémoire dans un dictionnaire (D1) tous les ID qu'on trouve et qui étaient restant dans le fichier 2.

d1(CStr(f2.Range("C" & i).Value)) = "" signifie la valeur de l'ID trouvée après filtrage dans le fichier2, est convertie en "string" avec "CStr" et mémorisé dans un Dictionnaire "D1" sous forme de clé unique "D1.Keys"

-Lorsque tous les ID sont relevés, il faut maintenant appliquer le filtre avec tous les iD trouvés et conservés dans "D1.keys", c'est ce que fait la ligne suivante:

f1.Range("B13:F" & DerLig_f1).AutoFilter Field:=1, Criteria1:=d1.keys, Operator:=xlFilterValues.

Si cela ne marche pas sur vos fichiers réels, et que vous ne vous en sortez pas , déposez-en un ici (quelques lignes suffisent et sans données confidentielles) et avec le code que vous avez adapté.

Cdlt

Rechercher des sujets similaires à "filtre feuilles"