Affichage des lignes selon 1 seul critère

Bonjour,

Je sollicite votre aide après plusieurs heures de recherche infructueuse sur le net.

J'ai une base de données dans un classeur (onglet BD de mon fichier d'exemple).

Je cherche dans un autre classeur (pour les besoins de l'exemple dans une autre feuille) à extraire uniquement les lignes qui correspondent à mon critère qui est le Lot. (la finalité est donc de n'afficher que les lignes pour lesquelles le type est Lot).

J'ai vu pas mal de réponses apportées avec des INDEX et EQUIV mais malgré une analyse des réponses, je n'arrive pas à comprendre la structure de ces formules.

Si vous pouviez m'aider en m'apportant la formule qui correspond à mon exemple je vous en serais super reconnaissante !

Merci d'avance !

Bonsoir,

Pour retourner toutes les lignes contenant un mot particulier mais qui peut se répéter plusieurs fois, je pense qu'il te faut passer par VBA donc, pas de .xlsx mais .xlsm

Hervé.

bonjour ;tout mes voeux

ce que tu desires ; c'est un filtre ; voila une des formules pour filtre ; elle est matricielle donc a valider en faisant Ctrl Maj Entrée ,les 3 touches en meme temps

34jolinar.zip (11.02 Ko)

nb) les 2classeurs doivent etre ouverts

cordialement

Bonjour,

Tous mes voeux de bonheur et santé également !

Un grand merci pour la formule Tulipe !!

Malheureusement je ne savais pas que les fonctions matricielles exigeaient que les deux fichiers soient ouverts, ce qui ne va pas être possible, le but étant justement d'avoir le fichier de synthèse complétement indépendant de la base de données.

Theze, n'y connaissant rien en VBA, serait-il possible de passer outre cette contrainte?

Pourriez-vous m'aider avec le code VBA (s'il faut transformer mon fichier en xml cela ne me pose pas de problème)?

D'avance merci !

Bonjour,

Voici une piste. Aller dans le VBE (Alt+F11), insérer un module standard (menu "Insertion" puis "Module"), coller le code ci-dessous dans la partie droite, dans la Sub "Filtrage", adapter le chemin du classeur, son nom, la feuille où se trouve la cellule qui contient le critère puis l'adresse de la cellule en question, laisser le curseur n'importe où dans le code de la Sub "Filtrage" puis appuyer sur F5 et aller voir le résultat dans la feuille de calcul :

Sub Filtrage()

    Dim Plage As Range
    Dim Mot As String

    'récupère le critère dans le classeur fermé. Adapter le chemin du classeur,
    'le nom du classeur, le nom de la feuille et l'adresse de la cellule...
    Mot = RecupValeur("C:\MonDossier\", "MonClasseur.xls", "Feuil1", "A1")

    'défini la plage sur la feuille active de A1 à Ex
    With ActiveSheet

        Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 5).End(xlUp))

    End With

    'effectue le filtrage sur la colonne 3 (C)
    Plage.AutoFilter 3, "=" & Mot

End Sub

Function RecupValeur(Chemin As String, _
                     NomClasseur As String, _
                     NomFeuille As String, _
                     Cellule As String)

    Dim Arg As String

    'vérifie si l'anti slash existe sinon le rajoute
    If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"

    'si c'est une plage, affiche un message et fin de procédure
    If InStr(Cellule, ":") Then

        MsgBox "Une seule cellule en argument", , "Cellule unique."
        Exit Function

    End If

    'ignore l'erreur si la plage est déjà en référence R1C1
    On Error Resume Next

    'transforme la référence en style R1C1
    Cellule = Range(Cellule).Address(, , xlR1C1)

    'construit l'argument
    Arg = "'" & Chemin & "[" & NomClasseur & "]" & NomFeuille & "'!" & Cellule

    'passe la valeur à la fonction
    RecupValeur = Application.ExecuteExcel4Macro(Arg)

End Function

Hervé.

Un grand merci, j'ai effectivement utilisé le VBA, en mélangeant votre solution et des informations glanées sur Internet.

Désolée de ne pas avoir répondu plus tôt.

Rechercher des sujets similaires à "affichage lignes seul critere"