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 !
Bonjour,
J'ai une base de données. Je voudrais filtrer cette base de données pour qu'elle n'affiche que les colonnes contenant au moins des chaines de caractères définies dans une autre feuille.
Par exemple, si ma colonne x est : ABCDABCD
BCDEBCDE
CDEFCDEF
MEFTGUIOO
et l'ensemble de mes valeurs pour lesquelles je veux trouver les cellules de la colonne x est : ABC DEF
Alors, la colonne x filtrée sera :
ABCDABCD
CDEFCDEF
Jusqu'ici, pas de soucis, je peux utiliser par exemple code suivant :
Mais, voici deux raisons qui font que je ne peux pas employer ce code :
- Premièrement dans ma base de données cette liste est assez longue (100 entrées minimum)
- Deuxièmement elle est amenée à être modifiée régulièrement
Ce dont j'ai besoin :
- Cette liste sera enregistrée dans une feuille à part. Il faudrait qu'au lieu d'avoir
Code:
Array( _
"=*ABC*", "=*DEF*", "=*EFT*")
, les valeurs à regarder renvoient vers cette feuille
J'espère que je suis assez clair, si ce n'est pas dites le moi et j'essaierai d'être le plus précis possible à nouveau
Merci en avance
Jeremie
Re : VBA - Filtrer sur une liste de valeurs dynamiques
Bonjour,
Ce qui suit s'applique seulement à partir de la version Excel 2007.
Supposons que tu as une plage nommée "PlgCritere" où sont compris tous les éléments : ABC, DEF, EFT à raison
d'un élément par formule. Tu peux utiliser la fonction "Decaler" pour définir la plage "PlgCritere".
Tu peux faire construire ton tableau (array) avant d'appliquer le filtre.
Le hic, c'est que je n'ai aucune idée du nombre limite d'items que peut contenir le tableau
pour effectuer un filtre! Le sais-tu? Si oui, peux-tu nous le communiquer?
VB:
Sub Test()
Dim Arr()
With .Range("PlgCritere")
ReDim Arr(1 To .Rows.Count)
For Each c In .Cells
a = a + 1
'Tu construit le tableau
Arr(a) = "=*" & c.Value & "*"
Next
End With
With ActiveSheet
.Range("$A$1:$DB$10000").AutoFilter Field:=4, Criteria1:=Arr, Operator:=xlFilterValues
End With
End Sub
- 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