Filtre élaboré avec nombre de critère variables

  • Initiateur de la discussion Initiateur de la discussion Adriano43
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Adriano43

XLDnaute Occasionnel
Bonjour à tous

Débutant en vba, je suis tombé sur votre forum qui est vraiment très riche d'enseignements. Après plusieurs recherches et n'ayant pas trouvé la solution, je crée un nouveau topic; voici mon problème:

J'ai un classeur excel qui contient plusieurs onglets. Je dois faire des extractions à partir de l'onglet 1 (décrivant les semaines, et qui est donc actualisé chaques semaine)
Les critères se situent sur une autre feuille disons la feuille2, le nombre de critères est variable et l'extraction peut nécessiter des conditions de "et" et "ou".
Le résultat de l'extraction devra apparaitre sur le feuille 2 en cellule A5.
Mon problème:
Je réussis à faire la macro mais en définissant la zone de critères (exemple: A1:N3); si il y a une condition "et" et "ou", l'extraction fonctionne. Par contre si il n'y a qu'une condition "et" ou "ou" c'est à dire que soit la ligne 2 ou la ligne 3 est vide; le résultat de l'extraction est une copie de ma base de données. Il faudra je pense que la macro exclut les cellules vides dans la plage de critères pour ne faire l'extraction qu'à partir des critères mis par l'utilisateur.

Je vous joins un exemple de mon fichier.

Merci de votre aide

Cordialement

Adriano
 

Pièces jointes

Dernière édition:
Re : Filtre élaboré avec nombre de critère variables

Bonjour à tous et Bonjour tototiti,

La macro faite précédemment fonctionne; je voudrais simplement y ajouter une fonction mais je ne sais comment faire...
Je voudrais toujours faire une extraction à partir des critères dont la plage se situe en A1 d'une feuille mais je voudrais que l'extraction proposée comporte uniquement comme colonne les colonnes passées en critères.
Ex: critères concernant la colonne a et c

Le résultat de l'extraction doit être uniquement les colonnes a et c

Je vous joins un fichier exemple.

Merci de votre aide par avance
 

Pièces jointes

Re : Filtre élaboré avec nombre de critère variables

Bonjour Adriano,

Dans ce cas, tu ne dois pas copier la ligne de titre de la liste (Sheets(1)) mais tu dois copier la ligne de titres de la zone de critères (Activesheet), sans supprimer les 2 premières cellules
Tu as une idée de comment faire ?
 
Dernière édition:
Re : Filtre élaboré avec nombre de critère variables

Bonjour Tototiti,

Oui c'est bon je sais comment faire merci de m'avoir mis sur la piste.
J'étais entrain de réfléchir à une autre solution qui fonctionne en filtre avancé mais que je n'arrive pas à coder en vba.
Je mets mes entêtes de colonnes à partir de A15. ( Dans la fenêtre filtre avancé, je sélectionne cette plage comme "Copier dans" ce qui à l'avantage de me donner une extraction en foonction des critères situés en A1 et de me renseigner uniquement les colones que j'ai préalablement mise en A15.
Je voulais donc définir cette plage entêtes de la manière suivante:

"'Definition des entêtes située sur la feuille active débutant en A15
With ActiveSheet
Set entêtes = .Range(Selection, Selection.End(xlToRight)).Select
End With"

Mais il y a une erreur que je ne vois pas
Pourriez vous m'aider?

Cordialement
 
Re : Filtre élaboré avec nombre de critère variables

Re,

Je ne comprend pas bien, ça ne marchait pas avec Activesheet.range("A15").currentregion ?

Sinon, remplace peut-être par

with activesheet
set entetes = .Range(.range("A15"), .range("A15").end(xltoright))
end with
 
Re : Filtre élaboré avec nombre de critère variables

Re,

Non; la macro renvoyée jusqu'à présent un extraction certes en fonction des critères situés en A1 mais nous proposer l'ensemble des colonnes du fichier source.
Mais j'y suis arrivé en la modifiant.
Voici le code pour info:

Sub MacroExtractionavancée2()

' Macro qui fait l'extraction à partir de la bdd à partir des critères en A1 et des intitulés de colonne défini par l'utilisateur en A15
Dim bdd As Range
Dim critères As Range
Dim entetes As Range


'Définition de la plage base de données située en feuille1
Set bdd = Sheets(1).Range("A1").CurrentRegion

'Définition de la plage de critères située sur la feuille active débutant en A1
With ActiveSheet
Set critères = .Range("A1").CurrentRegion
End With

'Definition des entêtes située sur la feuille active débutant en A15
With ActiveSheet
Set entetes = .Range(.Range("A15"), .Range("A15").End(xlToRight))
End With


'Réalisation du tri et affichage des résultats à partir de A15
bdd.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=critères, _
CopyToRange:=ActiveSheet.Range("A15").CurrentRegion, Unique _
:=False

End Sub
 
Re : Filtre élaboré avec nombre de critère variables

Re,

Juste pour que je meure moins bête, à quoi te servent les lignes

Code:
'Definition des entêtes située sur la feuille active débutant en A15
    With ActiveSheet
    Set entetes = .Range(.Range("A15"), .Range("A15").End(xlToRight))
    End With

si tu n'utilises pas la variable entetes dans la suite du code ?
 
Re : Filtre élaboré avec nombre de critère variables

Bonjour Tototiti

C'est effectivement une bonne question, je vais voir pour alléger le code en supprimant ces lignes de codes.
Une dernière précision, je voulais définir une zone d'impression comme une plage de cellule et je pensais au code suivant mais celui-ci doit comporter une erreur, avez vous une idéee?

Application.ScreenUpdating = False
With ActiveSheet
Set zoneimpression = .Range("A15").CurrentRegion
End With
Columns("A:A").EntireColumn.AutoFit
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = zoneimpression

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
357
Retour