Filtrage avancé

Bonjour le forum,

Je rencontre actuellement un soucis avec une macro de filtrage avancé.

Le filtrage n'est prit en compte que si je renseigne une date, or, je souhaiterais que même si je n'ai pas sélectionné de date qu'il m'affiche le résultat du critère en question (ex: colonne referentiel = référence_1, colonne date = vide, techno = vide ou techno_1).

Avez-vous une idée?

Voici le fichier Excel.

8filtreavance.xlsm (51.52 Ko)

Code via l'enregistreur de macro

Sub FiltreData()

    'Le Tableau14[#All] est le tableau des critères dans l'onglet Tools
    'aucune modification n'est nécessaire si vous augmentez le nombre de ligne ou le nombre de colonne
    Worksheets("Source").Range("Tableau_source[#All]").AdvancedFilter Action:= _
        xlFilterCopy, CriteriaRange:=Worksheets("Tools").Range("Tableau14[#All]"), _
        CopyToRange:=Worksheets("Resultat").Range("B3:H3"), Unique:=False
        'Si vous ajoutez des colonnes dans le résultat attention à mettre à jour le .Range("B3:H3")
        'qui délimite la range où s'affiche les données filtrées. Sinon vous n'aurez pas toutes les données
        'car il y aura un débordement et ce débordement ne sera pas prit en compte dans la fiche "resultat"
    'Selection de la feuille "Resultat" après filtrage afin d'afficher les données filtrées après traitement
    Sheets("Resultat").Activate
    'Selection de la cellule A1 d'afficher le haut du tableau
    Range("A1").Select

End Sub

Code from scratch

Sub FiltreAdv()

'déclaration des variables
Dim TSource As Range
Dim TCritere As Range
Dim TResult As Range

'définition des variables
'Set TSource = Worksheets("Source").Range("A1").CurrentRegion
Set TSource = Worksheets("Source").Range("Tableau_source[#All]")
'Set TCritere = Worksheets("Tools").Range("F4").CurrentRegion
Set TCritere = Worksheets("Tools").Range("Tableau14[#All]")
Set TResult = Worksheets("Resultat").Range("B3:H3")

'filtre avancé
TSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=TCritere, CopyToRange:=TResult
'TSource.AdvancedFilter(Excel.XlFilterAction.xlFilterCopy, CriteriaRange:=TCritere, CopyToRange:=TResult)

'aller à la feuille de résultat + positionnement en haut du tableau
ActiveWorkbook.Sheets("Resultat").Activate
Range("A1").Select

End Sub

Le 2ème code ne fonctionne plus, mais à la base les deux codes posent le même problème quand il était fonctionnel.

Mon tableau de critère comporte 3 colonnes et plusieurs lignes. (ce tableau est utilisé par le script)

tableau de critere

Le tableau de critère de recherche dans cette image comporte des menus déroulants et ne sont pas utilisés par le script.

Les informations sélectionnées via ce tableau est automatiquement reportées sur le tableau de critère de recherche utilisé par le script (première image)

filtrage

Merci d'avance pour votre aide.

Cordialement

Mauro

up

Rechercher des sujets similaires à "filtrage avance"