Bonjour à tous,
les criteres dans le code sont inscrit en K3 et L3, alors que dans la feuille ils sont situés en K1 et L1.
C'est tes formules qui font référence à K1 et L1
--- Tentative d'explication du code ---
il s'agit d'un filtre élaboré (ou avancé)
Sub Extrait()
Dim Lg&
Application.ScreenUpdating = False
Lg = Range("b" & Rows.Count).End(xlUp).Row
Range("af2") = "=k3+L3=2" 'critère
Range("b2:L" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("af1:af2"), CopyToRange:=Range("P2:U2"), Unique:=False
Range("af2").ClearContents
End Sub
Lg => dernière ligne du tableau (BDD; base de données)
Range("af1:af2") => zone de critères, le critère est en af2 (af1 étant l'en-tête)
Range("af2") = "=k3+L3=2" (le 3, parce que les données commencent en ligne 3, sous les en-têtes)
ici, comme il s'agit d'un "critère formule", l'en-tête est facultatif
cette zone pourrait être n'importe où en dehors du tableau.
Range("b2:L" & Lg) => c'est la base de données
elle doit comporter une ligne d'en-tête
Range("P2:U2") => plage d'extraction (résultat)
cette plage doit comporter les mêmes en-têtes que la BDD, (ils peuvent être classés différemment,
et ne sont pas tous obligatoires), on ne met que les résultats souhaités.
----- à noter -----
Un filtre élaboré est un outil très puissant, et avec un peu d'expérience permet de faire beaucoup de choses
il est surtout + rapide que n'importe quelle autre méthode (formules ou boucles)
Dans mon dernier fichier, le principe est le même.
Bonne continuation
Claude