Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule pour définir un champ pour filtre avançé

mamarus

XLDnaute Junior
Bonjour ,

je cherche à faire une forme de recherche multicritères dynamique , pour cela je vais utiliser le filtre avançé d'Excel.

j'ai créé des listes déroulantes jusqu'à un maximum de 6 qui est ma zone de critères. (cellule A2 à F3 du fichier exemple joint)

dans la partie affichage (cellule A7 à F7 au maximum ), apparaît le nombre de colonnes d'affichage.

c'est dans la partie basse du filtre à l'étape "Copier dans" que l'on doit définir les champs. Mon problème se situe à cet endroit, j'ai bien le départ ici A7, et en fonction du nombre de colonnes sélectionnées, on met la suite du champ ( jusqu' à F7 potentiellement ).
Manuellement, cela se fait sans problème, puisqu'on sélectionne ses champs mais comme je souhaiterai l'automatiser avec une macro, il faudrait, une formule ou une syntaxe qui puisse automatiquement, déterminer le champs, c'est à dire, qu'en partant de la 1 ère colonne, en ligne 7, il puisse me définir le nombre de colonnes non vides et me mettre cela dans la 2 ème partie du champs ( après les 2 : )
Cela donnerait dans l'exemple du fichier joint A7: D7.

j'ai bien tenté quelque chose avec la fonction NBVAL, mais cela a abouti à rien.

Si quelqu'un pouvait y jeter un œil, je l'en remercie par avance.

Mamarus
 

Pièces jointes

  • Filtre élaboré.xlsm
    47 KB · Affichages: 28

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Code:
Sub filtrer()
    Sheets("Base").Range("A1:AI78").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("Recherche!Criteria"), CopyToRange:=Range( _
        "Recherche!Extract"), Unique:=False
End Sub

Boisgontier
 

Pièces jointes

  • Copie de Filtre élaboré.xlsm
    38.7 KB · Affichages: 32

Discussions similaires

Réponses
16
Affichages
680
Réponses
16
Affichages
605
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…