XL 2019 Filtre avancé recherche multiple, remplir des champs manuellement

LoshiMoshi

XLDnaute Nouveau
Bonjour à tous,

Je me permets de poster car je n'arrive pas à regler une difficulté dans le cadre de la création d'un excel. J'essaie de créer un fichier automatisé qui, à partir d'une base de données, rechercherait les lignes contenant des informations spécifiques et les afficherait. J'ai déjà réalisé une ébauche via un tuto que je vous joins pour mieux illustrer mon problème.

L'idée générale est la suivante : au lieu d'utiliser un filtre avancé qui énumère toutes les données de base avec petit codage VBA, je préférerais pouvoir remplir un champ MANUELLEMENT, par exemple "Température Mini" avec la valeur "-10", et obtenir en résultat toutes les valeurs "-10 ou moins". Si une ligne contient la valeur "-40", elle devrait également être affichée en résultat. Ce même principe s'appliquerait à la température maximale, la hauteur, la longueur, etc.

J'ai essayé d'être aussi clair que possible, mais c'est jamais simple d'imager ce que l'ont veu . J'espère que le fichier joint vous aidera à mieux comprendre ma demande.

Je vous remercie sincèrement par avance, je suis au bout lol ! ( j'ai du compressé le fichier, j'espere qu'il fonctionne encore)
 

Pièces jointes

  • BenchmarkSC_test_RECHERCHE_V1 (1).xlsm
    89 KB · Affichages: 2

LoshiMoshi

XLDnaute Nouveau
Bonjour LoshiMoshi, et bienvenu sur XLD,
Un premier essai en PJ.
Ne concerne que T°min et T°max.
Concernant longueur, largeur, hauteur, ces valeurs doivent être être un min ou un max ?

Bonjour Sylvanu,

Merci pour votre réponse et le fichier qui fonctionne ! je suis dessus depuis 2 jours et en quelques minutes vous arrivez à solutionner mon problème, un grand merci ! Serait-il possible de connaitre la manipulation afin de continuer l'apprentissage d'Excel ?

Concernant les hauteurs / largeurs et hauteur cela serait mini 12m et plus s'il vous plait

Ainsi que pour les volumes si possible aussi de volume mini, exemple je tape 100m3 maximum et il me sort les salles de 100m3 et plus.

Enfin dernière question (je suis gêné ca fait beaucoup pour une aide gracieuse !), serait-il possible d'au lieu d'avoir des listes déroulantes pour la recherche, de taper moi même le chiffre que je cherche? Par exemple, à la place de choisir -10 dans la liste déroulante, si je tape manuellement -9 qu'il me sorte comme vous avez réussi à le faire, les chiffres supérieur. Si c'est complexe ca restera comme cela avec la liste déroulante sans problème !

Encore une fois un grand merci, vous sauvez ma santé mentale lol
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un second essai avec tous les filtres.
serait-il possible d'au lieu d'avoir les listes déroulantes pour la recherche
Dans les champs de recherche il n'y a aucune liste déroulante.
Serait-il possible de connaitre la manipulation afin de continuer l'apprentissage d'Excel ?
Tout est dans le code, j'y ai mis des commentaires. N'hésitez pas si vous avez des questions.
VB:
Sub Filtrage()
    Application.ScreenUpdating = False
    ' Efface tableau
    Efface
    ' Copie tableau Source
    Sheets("Source").ListObjects(1).DataBodyRange.Copy Sheets("Recherche").ListObjects(1).ListRows.Add.Range
    ' Acquisition filtres demandés
    Lab = [A2]: SourceI = [I2]
    Tmin = [G2]: Tmax = [H2]: Largeur = [D2]: Longueur = [C2]: Volume = [F2]: Hauteur = [E2]
    ' Mise en place des filtres
    If Lab <> "" Then [TabloRecherche].AutoFilter Field:=1, Criteria1:="=" & Lab, Operator:=xlAnd
    If Longueur <> "" Then [TabloRecherche].AutoFilter Field:=3, Criteria1:=">=" & Longueur, Operator:=xlAnd
    If Largeur <> "" Then [TabloRecherche].AutoFilter Field:=4, Criteria1:=">=" & Largeur, Operator:=xlAnd
    If Hauteur <> "" Then [TabloRecherche].AutoFilter Field:=5, Criteria1:=">=" & Hauteur, Operator:=xlAnd
    If Volume <> "" Then [TabloRecherche].AutoFilter Field:=6, Criteria1:=">=" & Volume, Operator:=xlAnd
    If Tmin <> "" Then [TabloRecherche].AutoFilter Field:=7, Criteria1:="<=" & Tmin, Operator:=xlAnd
    If Tmax <> "" Then [TabloRecherche].AutoFilter Field:=8, Criteria1:=">=" & Tmax, Operator:=xlAnd
    If SourceI <> "" Then [TabloRecherche].AutoFilter Field:=13, Criteria1:="=" & SourceI, Operator:=xlAnd
End Sub
Sub Efface()
    ' Supprime tout filtre
    With [TabloRecherche].ListObject
        If Not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
    End With
    ' Vide tableau Recherche
    On Error Resume Next
    [TabloRecherche].ListObject.DataBodyRange.Delete
End Sub
 

Pièces jointes

  • BenchmarkSC_test_RECHERCHE_V1 (V3).xlsm
    108.4 KB · Affichages: 5

LoshiMoshi

XLDnaute Nouveau
Re,
Un second essai avec tous les filtres.

Dans les champs de recherche il n'y a aucune liste déroulante.

Tout est dans le code, j'y ai mis des commentaires. N'hésitez pas si vous avez des questions.
VB:
Sub Filtrage()
    Application.ScreenUpdating = False
    ' Efface tableau
    Efface
    ' Copie tableau Source
    Sheets("Source").ListObjects(1).DataBodyRange.Copy Sheets("Recherche").ListObjects(1).ListRows.Add.Range
    ' Acquisition filtres demandés
    Lab = [A2]: SourceI = [I2]
    Tmin = [G2]: Tmax = [H2]: Largeur = [D2]: Longueur = [C2]: Volume = [F2]: Hauteur = [E2]
    ' Mise en place des filtres
    If Lab <> "" Then [TabloRecherche].AutoFilter Field:=1, Criteria1:="=" & Lab, Operator:=xlAnd
    If Longueur <> "" Then [TabloRecherche].AutoFilter Field:=3, Criteria1:=">=" & Longueur, Operator:=xlAnd
    If Largeur <> "" Then [TabloRecherche].AutoFilter Field:=4, Criteria1:=">=" & Largeur, Operator:=xlAnd
    If Hauteur <> "" Then [TabloRecherche].AutoFilter Field:=5, Criteria1:=">=" & Hauteur, Operator:=xlAnd
    If Volume <> "" Then [TabloRecherche].AutoFilter Field:=6, Criteria1:=">=" & Volume, Operator:=xlAnd
    If Tmin <> "" Then [TabloRecherche].AutoFilter Field:=7, Criteria1:="<=" & Tmin, Operator:=xlAnd
    If Tmax <> "" Then [TabloRecherche].AutoFilter Field:=8, Criteria1:=">=" & Tmax, Operator:=xlAnd
    If SourceI <> "" Then [TabloRecherche].AutoFilter Field:=13, Criteria1:="=" & SourceI, Operator:=xlAnd
End Sub
Sub Efface()
    ' Supprime tout filtre
    With [TabloRecherche].ListObject
        If Not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
    End With
    ' Vide tableau Recherche
    On Error Resume Next
    [TabloRecherche].ListObject.DataBodyRange.Delete
End Sub
Merci pour toutes les modifications ainsi que vos explications c'est super !

Serait-il possible que lorsque j'appuie sur "efface", les données qui ont servis à la recherche soient effacé aussi?

Je vais me plonger un peu plus dessus, et reviendrais vous dire les avancés.

En tout cas un grand merci :)
 

Statistiques des forums

Discussions
315 093
Messages
2 116 132
Membres
112 667
dernier inscrit
foyoman