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