[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.
 

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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki