Extraire

bonjour le forum

j'ai un fichier qui extrait des lignes suivant des criteres en K1 et L1,je voudrais le modifier pour qu'il extriat les lignes suivant les criteres K1L1,c'est-a-dire qu'il extrait que les lignes qui ont les 2 criteres en meme temps.

Le fichier actuel extrait les lignes qui ont un ou l'autre de ces criteres.

j'ai rajouté une colonne en M qui totalise le nombre de critere qu'on chaque ligne,ce qui fait que la formule en O 2 devrait extraire que les lignes qui ont 2 en Col M,mais comment inscrire cette information dans la formule.

merci

ci-joint un bout du fichier

16jadextre.xlsm (22.48 Ko)

bonjour

un essai

avec 2 fonctions ;une premiere de recherche multiple sur la colonne A; ensuite ces valeurs sont reprises dans recherche v pour renvoyer le reste correspondant

20jad-73.zip (16.59 Ko)

cordialement

Bonjour à tous,

Je sais pas faire par formules,

un petit code en partant de tes matricielles

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("w2:ab2"), Unique:=False
    Range("af2").ClearContents
End Sub

Bonne journée

Claude

19jad73-extrait.xlsm (23.21 Ko)

Une humble contribution, si cela peut t'aider

Cdlt

Renyeu

16jad-73-2.zip (8.03 Ko)

bonjour le forum,tulipe_4,dubois,renyeu

merci pour vos réponses , je n'ai que l'embarras du choix

je prends celui de dubois (question de place dans ma feuille)

merci

re,

Juste pour la forme, on peut mettre les résultats ailleurs

ici la formule est simplifiée.

Dans le VBE de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg&
  If Not Application.Intersect(Target, Range("k1:L1")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    Range("a3:a" & Lg) = _
        "=IFERROR(MATCH($k$1,b3:g3,0)+MATCH($L$1,b3:g3,0),0)"   'formule

    Range("af2") = "=a3>0"                                      'critère
    Range("a2:g" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    Range("af1:af2"), CopyToRange:=Range("w2:ab2"), Unique:=False
    Range("af2,a3:a" & Lg).ClearContents
  End If
End Sub

Amicalement

Claude

bonjour le forum,claude,renyeu,tulipe

je reviens sur le code que vous m'avez donné pour des explications.

il fonctionne bien mais j'aimerais savoir ce que signifie les "af1 et af2" et 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 juste pour essayer de comprendre.

Autre chose,comme je fais des tests un peu sur tout,serait-il possible d'extraire la ligne précedente de celle qui contient les criteres

dans le fichier joint elles sont en jaune

merci

7jadextre.xlsm (25.17 Ko)

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

bonjour dubois

ouais ______ mais c'est moins chic , c'est froid ; synthetique ; sans cassement de tete ; ça marche toujours ; du formica ,nous on fait dans la marquetterie , a la main avec du sparadrap ;;;; snif

bien cordialement et merci pour tout

Rechercher des sujets similaires à "extraire"