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

[Resolu] VBA, Filtre avec plus de 20 Criteres

Alban.aktisea

XLDnaute Nouveau
Bonjour à tous,

Je rencontre un problème sur ma macro plusieurs heures que j'essaie de trouvé une solution en vain

Actuellement je filtre par rapport aux valeurs de V4 à V24, et je souhaiterais aller jusqu'à V38.
Mais excel me limite à 20 critères impossible d'en ajouté plus.

Si quelqu'un à une solution à mon problème, ça m’enlèverais une grosse épine du pied.

Merci d'avance


Code:
Sub villes()
ActiveSheet.Unprotect
Sheets("Listing entreprises").Unprotect
With Worksheets("Listing entreprises")
If .FilterMode = True Then .ShowAllData
End With

Sheets("Rapport").Range("$B$15:$Z$21").Interior.Color = RGB(242, 220, 219) 
Sheets("Listing entreprises").Range("$A$3:$AI$15000").AutoFilter Field:=5, Criteria1:=Array(Sheets("Paramètres").Range("V4").Value, Sheets("Paramètres").Range("V5").Value, _
Sheets("Paramètres").Range("V6").Value, Sheets("Paramètres").Range("V7").Value, Sheets("Paramètres").Range("V8").Value, Sheets("Paramètres").Range("V9").Value, _
Sheets("Paramètres").Range("V10").Value, Sheets("Paramètres").Range("V11").Value, Sheets("Paramètres").Range("V12").Value, Sheets("Paramètres").Range("V13").Value, _
Sheets("Paramètres").Range("V14").Value, Sheets("Paramètres").Range("V15").Value, Sheets("Paramètres").Range("V16").Value, Sheets("Paramètres").Range("V17").Value, _
Sheets("Paramètres").Range("V18").Value, Sheets("Paramètres").Range("V19").Value, Sheets("Paramètres").Range("V20").Value, Sheets("Paramètres").Range("V21").Value, _
Sheets("Paramètres").Range("V22").Value, Sheets("Paramètres").Range("V23").Value, Sheets("Paramètres").Range("V24").Value), Operator:=xlFilterValues
Sheets("Listing entreprises").Protect , AllowFormattingCells:=True, _
                    AllowFormattingColumns:=True, _
                    AllowFormattingRows:=True, _
                    AllowDeletingRows:=True, _
                    AllowFiltering:=True, _
                    Scenarios:=True
                   
Calculate
ActiveSheet.Protect
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
De toutes façon la formulation Array( suivi d'une série de Range(…).Value de cellules verticalement consécutives est un peu idiote en soit puisque la Value d'un Range représentant simplement l'ensemble des cellules constitue un tableau assez analogue, sauf qu'il a 2 dimensions commençant à 1, la 2ième étant toujours 1.
 

Alban.aktisea

XLDnaute Nouveau
Idéalement il faudrait un criteriaRange, pour ne plus être limité
Sinon oui je peut mettre les valeurs en horizontale

J'ai mis le fichier en pièce jointe.

Merci pour votre aide en tout cas
 

Pièces jointes

  • 2H. source.xlsm
    2.1 MB · Affichages: 89

Dranreb

XLDnaute Barbatruc
Comme ça ça marche :
VB:
Dim TDon(), TCrit(), Le&, Ls&
TDon = Sheets("Paramètres").Range("V4:V38").Value
ReDim TCrit(1 To UBound(TDon, 1))
For Le = 1 To UBound(TDon, 1)
   If Not IsEmpty(TDon(Le, 1)) Then Ls = Ls + 1: TCrit(Ls) = TDon(Le, 1)
   Next Le
ReDim Preserve TCrit(1 To Ls)
Sheets("Listing entreprises").Range("$A$3:$AI$15000").AutoFilter Field:=5, Criteria1:=TCrit, Operator:=xlFilterValues
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…